【发布时间】: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。当然,从长远来看,对于供应商在了解封装目标后仍坚持进行非法访问的软件,将无法治愈。