Update
该问题已得到解决。从 10.0.36 开始的新版本 CLI 可与 JDK 16 正常工作。
从这里下载:https://platform.here.com/sdk/cli https://platform.here.com/sdk/cli
根本原因
一些工具和库使用反射来访问 JDK 中仅供内部使用的部分。这称为非法反射访问,默认情况下在 JDK 16 及更高版本中是不允许的。
默认情况下,使用早期 Java 版本编译的直接访问 JDK 内部 API 的代码不起作用。
java 启动器选项--illegal-access
控制宽松的强封装。该选项的默认值为--illegal-access=deny
,禁用非法访问操作。
因此,使用 SDK 16 的 CLI 中与目录相关的命令失败的问题是sun.security.*
自 JDK 16 起,内部 API 不可用。
下面是包含内部 API 的表,该表在 JDK 16 中不起作用:https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool https://wiki.openjdk.java.net/display/JDK8/Java+Dependency+Analysis+Tool
默认情况下强封装JDK内部:https://openjdk.java.net/jeps/396 https://openjdk.java.net/jeps/396
OLP文档指出,当使用Java 8以上时,可能会出现这样的错误:https://developer.here.com/documentation/java-scala-dev/dev_guide/topics/configure-your-environment.html https://developer.here.com/documentation/java-scala-dev/dev_guide/topics/configure-your-environment.html
解决方法
作为解决方法,您可以添加环境变量,
export _JAVA_OPTIONS="--add-opens=java.base/sun.security.util=ALL-UNNAMED"
or
export _JAVA_OPTIONS="--illegal-access=permit" (this parameter is deprecated)
然后所有命令都应该正常工作。