java - 如何使用 JDK11 防止 java.lang.IllegalAccessError?

标签 java testing classloader java-11

我们在测试系统中收到以下异常。知道我们如何使用命令行开关来防止这种异常。知道这种异常是如何发生的吗?

是否可以在密集使用反射和类加载的测试系统中禁用完全访问检查?

java.lang.IllegalAccessError: class java.io.File (in module java.base) cannot access class javax.print.PrintException (in module java.desktop) because module java.base does not read module java.desktop
    at java.io.File.exists(File.java)
    at jdk.internal.loader.URLClassPath$FileLoader.getResource(URLClassPath.java:1199)
    at jdk.internal.loader.URLClassPath.getResource(URLClassPath.java:314)
    at jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:697)
    at jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
    at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:398)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:67)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
    at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:66)

最佳答案

尝试通过添加以下命令参数来运行它。

--add-reads java.base=java.desktop

关于java - 如何使用 JDK11 防止 java.lang.IllegalAccessError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53484173/

相关文章:

ruby-on-rails - 设计应用程序的 Rails 测试错误

javascript - 在所有测试后 Jest/TypeORM 清除数据库

tomcat - 对 Tomcat 中的 ClassLoader 问题感到困惑

java - 如何从 firebase 数据库中获取基于时间戳的排序数据

java - 将 json 数据附加到已经存在的 json 数据

testing - 认证测试运行异常

scala - 为什么SBT的线程上下文类加载器不能加载JDK类文件作为资源?

java - Hive:尽管使用 JDK8,但无法将 AppClassLoader 转换为 URLClassLoader

java - Eclipse 插件 : how to show . * 透视图默认资源

Java 8 - 如何将数组列表转换为特定类对象的列表