Java 17执行时添加--add-exports参数解决非法访问错误
Java 17迁移时IllegalAccessError问题解决
修正Java执行路径
你当前命令用的是Java 8的JRE路径,迁移到Java 17后得换成对应版本的路径,比如:/etc/alternatives/jre_17/bin/java
使用正确的JVM参数
你提到的参数有误,错误提示显示代码要访问sun.security.action.GetPropertyAction,所以需要的参数是--add-exports java.base/sun.security.action=ALL-UNNAMED,而非jdk.internal.misc相关的参数。
修改后的完整Ksh命令
/etc/alternatives/jre_17/bin/java $JAVA_OPTS --add-exports java.base/sun.security.action=ALL-UNNAMED -DDB_INFO_FILE=$DB_INFO_FILE -DRCFILE=$RCFILE -DSASPATH=/home/config -classpath $CLASSPATH com.myproject.Main 1>/dev/null 2>|$ERR_FILE &
注意事项
- JVM参数(比如
--add-exports)必须放在Java命令之后、主类名(com.myproject.Main)之前,位置错误会导致参数失效。 - 该参数的作用是让你的未命名模块(原Jar基于Java 8编译,无模块描述文件)能够访问Java基础模块
java.base中的受限包sun.security.action。
内容的提问来源于stack exchange,提问作者userLearner
相关产品推荐
相关产品推荐

