java.lang.размышляйте.Исключение InaccessibleObjectException В Junit с Java17

#maven #junit #java-17

Вопрос:

Если я запускаю тест Junit приложения с Java17 (до того, как приложение было создано с помощью Java8), я получаю эти проблемы:

 java.lang.reflect.InaccessibleObjectException: Unable to make void java.text.DecimalFormatSymbols.setPerMillText(java.lang.String) accessible: module java.base does not "opens java.text" to unnamed module @6a1aab78  at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)  at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)  at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)  at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)  Caused by: java.lang.NullPointerException: Cannot invoke "de.reply.arlanis.vw.dwa.base.db.model.DwaApplication.getMarkets()" because "this.app" is null   at de.reply.arlanis.vw.dwa.base.db.model.DwaApplicationTest.initApp(DwaApplicationTest.java:52)  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  at java.base/java.lang.reflect.Method.invoke(Method.java:568)  at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)  at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)  at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)  at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)  at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)  at org.mockito.internal.runners.DefaultInternalRunner$1$1.evaluate(DefaultInternalRunner.java:54)  at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)  at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)  at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)  at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)  at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)  at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)  at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)  at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)  at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)  at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)  at org.junit.runners.ParentRunner.run(ParentRunner.java:413)  at org.mockito.internal.runners.DefaultInternalRunner$1.run(DefaultInternalRunner.java:99)  at org.mockito.internal.runners.DefaultInternalRunner.run(DefaultInternalRunner.java:105)  at org.mockito.internal.runners.StrictRunner.run(StrictRunner.java:40)  at org.mockito.junit.MockitoJUnitRunner.run(MockitoJUnitRunner.java:163)  at org.junit.runner.JUnitCore.run(JUnitCore.java:137)  at org.junit.runner.JUnitCore.run(JUnitCore.java:115)  at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:43)  at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)  at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)  

Здесь есть исключение NullPointerException, на dwaApplicationService.getDwaApp();

 @Before  public void initApp() throws Exception {   app = dwaApplicationService.getDwaApp();  for (Market m : app.getMarkets()){  ...  

Комментарии:

1. Может быть: Unable to make void java.text.DecimalFormatSymbols.setPerMillText(java.lang.String) accessible: module java.base does not "opens java.text" to unnamed module … вы используете module-info.java файл?

2. Нет, я не вижу этого файла в проекте….

3. Я решил добавить этот арглин в свой pom.xml: lt;плагинgt; lt;плагинgt;lt;Идентификатор группыgt;org.apache.maven.pluginslt;Идентификатор группыgt;lt;/Идентификатор группыgt; lt;/Идентификатор группыgt;lt;Идентификатор группыgt;maven-надежный плагинlt;идентификатор группыgt;lt;/идентификатор группыgt; lt;/идентификатор группыgt;lt;зависимостиgt; lt;зависимостиgt;lt;зависимостьgt; lt;идентификатор группыgt;org.apache.maven.надежныйlt;Идентификатор группыgt;lt;/Идентификатор группыgt;lt;Идентификатор группыgt; lt;идентификатор группыgt;lt;идентификатор группыgt;lt;идентификатор группыgt;lt;идентификатор группыgt; lt;идентификатор группыgt;surefire-junit47lt;Идентификатор группыgt;lt;/artifactIdgt;lt;/artifactIdgt; lt;версияgt;${maven-surefire-plugin.версия}lt;версияgt; lt;/версияgt;lt;/версияgt; lt;/зависимостьgt;lt;/зависимостьgt; lt;/зависимостиgt;lt;/зависимостиgt;lt;конфигурацияgt;lt;конфигурацияgt; lt;аргЛайнgt;—добавить-открывает java.база/java.текст=ВСЕ БЕЗЫМЯННЫЕlt;аргЛайнgt; lt;/аргЛайнgt;lt;/аргЛайнgt; lt; /конфигурация gt; lt; /конфигурация gt; lt; /плагин gt;