【发布时间】:2021-03-26 03:08:54
【问题描述】:
我有一个基于 java 的 Spring Boot 项目,它使用 PowerMock 在必要时模拟静态方法和构造函数调用 由于升级到最新版本的 IntelliJ - 我需要使用大于 JDK 8 的 JDK 版本 我搬到了 Amazon Coretto,因为我想在 AWS Elastic Beanstalk 上的最新支持 JDK 上部署我的应用程序 当我升级并运行测试时,我开始遇到问题 关注此线程后 - https://github.com/java-decompiler/jd-gui/issues/187 并使用此 PowerMockIgnore 语法
@PowerMockIgnore("javax.management.", "com.sun.org.apache.xerces.", "javax.xml.", "org.xml.", "org.w3c.dom.", "com.sun.org.apache.xalan.", "javax.activation.*", "javax.xml.transform.*", "com.sun.org.apache.xalan.*")
我收到此错误
java.lang.RuntimeException: java.lang.reflect.InaccessibleObjectException: Unable to make protected java.lang.Class jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(java.lang.String,boolean) throws java.lang.ClassNotFoundException accessible: module java.base does not "opens jdk.internal.loader" to unnamed module @d5ce97f
at org.powermock.core.classloader.DeferSupportingClassLoader.findResource(DeferSupportingClassLoader.java:154)
at java.base/java.lang.ClassLoader.findResource(ClassLoader.java:1342)
at java.base/java.lang.Module.getResourceAsStream(Module.java:1575)
at kotlin.reflect.jvm.internal.impl.serialization.deserialization.builtins.BuiltInsResourceLoader.loadResource(BuiltInsResourceLoader.java:27)
at kotlin.reflect.jvm.internal.impl.descriptors.runtime.components.ReflectKotlinClassFinder.findBuiltInsData(ReflectKotlinClassFinder.kt:52)
at kotlin.reflect.jvm.internal.impl.builtins.jvm.JvmBuiltInsPackageFragmentProvider.findPackage(JvmBuiltInsPackageFragmentProvider.kt:60)
这让我难过了好几天。谁能提供任何关于我可以尝试的进一步建议
问候 达米安
【问题讨论】:
-
只是一个想法,您是否将
test (或 gradle 等效项)添加到 power mock 依赖项中?因为它不应该在运行代码时加载事件 -
好问题 - 它的范围是测试
-
您不需要在所有这些字符串的末尾添加
*吗?例如,不应该是javax.management.*而不是javax.management.? -
不幸的是我试过了,现在得到这个错误 - java.lang.RuntimeException: java.lang.reflect.InaccessibleObjectException: Unable to make protected java.lang.Class jdk.internal.loader.ClassLoaders$AppClassLoader .loadClass(java.lang.String,boolean) 抛出 java.lang.ClassNotFoundException 可访问:模块 java.base 不会“打开 jdk.internal.loader”到未命名模块 @35088e87
-
某人为您提供适当帮助的唯一方法是让您证明一个最小的可重复示例,例如显示您的问题的 github 项目。那么,人们可能会提供比您想象的更多的帮助。
标签: java spring-boot unit-testing powermock