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?

提问人:Aahlad Kethineedi 提问时间:11/17/2023 更新时间:11/17/2023 访问量:16

问:

我正在尝试从 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命令运行不是我要找的。

java spring-boot kotlin

评论


答: 暂无答案