提问人:Aahlad Kethineedi 提问时间:11/17/2023 更新时间:11/17/2023 访问量:16
Springboot 和 Kotlin khttp 错误 - Java 11 到 Java 17 的迁移:如何允许特定依赖项的反射类?
Springboot & Kotlin khttp error - Java 11 to Java 17 migration: How to allow reflective classes for a Specific dependency?
问:
我正在尝试从 Java 11 迁移到 Java 17。我的应用程序是用 Springboot 和 Kotlin 编写的。
我正在使用 khttp 依赖项进行客户端调用(第三方调用)。它在 Java 11 中工作得很好,因为反射在 Java 11 中不受限制,但 Java 17 的情况并不相同。当我使用 khttp.get() 时,我面临以下错误:
java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @7225790e
最初,我通过在我的pom.xml中将jvmArgument添加到maven-surefire和maven插件依赖项来解决构建问题,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version><!-- Your version --></version>
<configuration>
<compilerArgs>
<arg>--add-opens=java.base/java.net=ALL-UNNAMED</arg>
<arg>--add-opens=java.base/sun.net.www.protocol.https=ALL-UNNAMED</arg>
</compilerArgs>
</configuration>
</plugin>
但是,我仍然无法使用我的 khttp.get 方法,因为 VM 选项未应用于它。
如何允许反射不是在我的本地而是在服务器上进行我的 khttp.get() 调用
PS:使用Java命令运行不是我要找的。
答: 暂无答案
评论