Как предотвратить java.lang.IllegalAccessError с JDK11? - PullRequest
0 голосов
/ 26 ноября 2018

Мы получаем следующее исключение в нашей тестовой системе.Любая идея, как мы можем предотвратить это исключение, например, с помощью переключателя командной строки.И есть идеи, как это исключение может произойти?

Можно ли отключить проверку полного доступа в тестовой системе, в которой интенсивно используются отражения и загрузка классов?

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)

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Мы решили проблему, обновив JMockit версии 1.31 до текущей версии 1.44.Похоже, старая версия не совместима с текущей версией.

0 голосов
/ 26 ноября 2018

Попробуйте запустить его, добавив следующий аргумент команды.

--add-reads java.base=java.desktop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...