目前我的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 Implements 是我可以获得 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 中的文件替换这些文件?
创建指向首选版本的新自定义变量
将 %JAVA_HOME%/bin 设置为路径变量的第一个条目
利润!
检查
java -version
为什么不直接删除 Oracle Java 路径条目而不用担心路径中 JAVA_HOME 的位置?
您可能建议简单地删除安装程序在 Windows PATH 中添加的 Oracle Java 路径。是的,我也想到了这一点,但是安装程序还将 java.exe、javaw.exe 和 javaws.exe 文件复制到 C:\Windows\System32 目录,该目录也在 Windows PATH 变量中。因此,我没有追查安装程序放置 Java 的所有可能的目录,也为了避免删除某些进程实际上可能需要的 System32 文件,我决定简单地将我喜欢的 Java 主目录添加到路径前面是最好的选择。
对于Linux用户运行命令
sudo update-alternatives --config java
它将返回您拥有的 java JDK 列表,您可以简单地使用其索引来选择它