【问题标题】:How to downgrade JDK?如何降级JDK?
【发布时间】:2021-10-05 08:32:04
【问题描述】:

目前我的 Java 版本是 17。Neo4j 要求我安装 Java 11 或 OpenJDK 11,否则会报错 java.lang.IllegalAccessException: module java.base does not open java.nio to unnamed module @1817d444。我想我需要降级到 JDK 11。

Java Platform, Standard Edition 11 Reference Implementations 是我唯一可以获得 JDK 11 的地方。但它似乎是二进制文件,而不是设置。检查C:\Program Files\Java我找到了jdk-17和jre1.8.0的文件夹,所以我将刚刚下载的文件夹jdk-11复制到那里。检查路径环境我看到这两行:

C:\Program Files\Common Files\Oracle\Java\javapath
C:\Program Files (x86)\Common Files\Oracle\Java\javapath

检查 64 位的 javapath 我看到有 java.exe、javac.exe、javaw.exe、jshell.exe。这是否意味着我应该用 jdk-11 中的文件替换这些文件?

【问题讨论】:

  • JDK 11 和 JDK 17 的区别在于你不能再使用选项--illegal-access=permit 启用这种非法访问。但是,您仍然可以使用 --add-opens java.base/java.nio=ALL-UNNAMED 进行访问,而无需切换到较旧的 JDK。当然,从长远来看,对于供应商在了解封装目标后仍坚持进行非法访问的软件,将无法治愈。

标签: java neo4j path java-11


【解决方案1】:
  1. 创建指向首选版本的新自定义变量

  2. 将 %JAVA_HOME%/bin 设置为路径变量的第一个条目

  3. 利润!

    检查java -version

为什么不直接删除 Oracle Java 路径条目,而不用担心路径中的 JAVA_HOME 位置?

您可能会建议简单地删除安装程序预先添加到您的 Windows PATH 的 Oracle Java 路径。是的,我也想过,但是安装程序还将 java.exe、javaw.exe 和 javaws.exe 文件复制到 C:\Windows\System32 目录,该目录也在 Windows PATH 变量中。因此,与其追查安装程序放置 Java 的所有可能目录,并避免删除某处某个进程实际上可能需要的 System32 文件,我决定将我喜欢的 Java 主目录简单地添加到路径中是最好的选择。

来源:How to set custom Java path after installing JDK 8 – Douglas C. Ayers

【讨论】:

  • 请在您的问题/答案中明确说明这是指什么。它是特定的操作系统吗?特定的 IDE?
  • 这是在 Windows 上,但我不认为它特定于 IDE
  • 另外,您应该记住,这将在整个系统中设置环境变量,因此它可能会无意中降级 Java 版本以进行其他操作。 This answer 建议在 neo4j 启动脚本中设置变量,所以它只适用于 neo4j。
  • 我不知道。非常感谢
猜你喜欢
  • 2011-09-18
  • 1970-01-01
  • 2019-01-25
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多