gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 04:30:38 41 4
gpt4 key购买 nike

我的源代码在 java 7 上编译并在 java 11 上运行。
我正在尝试将 imperva RASP 作为 java 代理集成到 tomcat 中。但是,当我启动 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"

我浏览了多个帖子,例如 this一个关于 --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"

关于java模块访问问题: "Class in a module cannot access class in unnamed module because module x does not read unnamed module y",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71995771/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com