Java 模块访问问题:"Class in a module cannot access class in unnamed module because module x does not read



我的源代码在java 7上编译,在java 11上运行。
我正试图将imperva RASP集成为tomcat中的java代理。但是,当我启动tomcat服务器时,它抛出了以下异常:

Caused by: java.lang.IllegalAccessError: class sun.security.ec.ECDSASignature (in module jdk.crypto.ec) cannot access class com.imperva.rasp.AgentBridge (in unnamed module @0x66c61024) because module jdk.crypto.ec does not read unnamed module @0x66c61024
at jdk.crypto.ec/sun.security.ec.ECDSASignature.<init>(ECDSASignature.java:118)
at jdk.crypto.ec/sun.security.ec.ECDSASignature.<init>(ECDSASignature.java:106)
at jdk.crypto.ec/sun.security.ec.ECDSASignature$SHA1.<init>(ECDSASignature.java:214)
at jdk.crypto.ec/sun.security.ec.SunEC$ProviderService.newInstance(SunEC.java:102)
at java.base/java.security.Signature.isSpi(Signature.java:331)

我传递java代理的方式是:

JAVA_OPTS="-javaagent:$IMPERVA_JAR $JAVA_OPTS"

我读了很多文章,比如这篇关于--add-opens论点的文章。基于此,我通过JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=jdk.crypto.ec/sun.security.ec=ALL-UNNAMED"考试我可以在日志中看到以下语句:

Picked up JDK_JAVA_OPTIONS:  --add-opens=jdk.crypto.ec/sun.security.ec=ALL-UNNAMED

我在这里错过了什么,或者我传递的参数中有任何语法错误吗?
没有其他配置

任何帮助都是感激的。谢谢你。

--add-reads代替--add-opens成功解决。

JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-reads jdk.crypto.ec=ALL-UNNAMED"

相关内容

  • 没有找到相关文章

最新更新