java.lang.reflect.InaccessibleObjectException:无法使字段私有最终 java.util.Comparator java.util.TreeMap.comparator 可访问:模块

Ort*_*ero 17 java eclipse cucumber cucumber-junit cucumber-java

这是我的第一个黄瓜项目,我在设置所有内容时遵循了教程。一切似乎都是一样的,但出于某种原因我得到了这个:

\n

java.lang.ExceptionInInitializerError。\n原因:java.lang.reflect.InaccessibleObjectException:无法使字段私有最终java.util.Comparator java.util.TreeMap.comparator可访问:模块java.base不“打开java.util”到未命名模块@74ad1f1f

\n

知道如何解决这个错误吗?

\n

下面我发布了控制台中出现的所有内容以及我的 pom 文件,以防我的依赖项出现问题,尽管教程的 pom 文件中的人员是相同的。

\n

这就是我的控制台中显示的所有内容。

\n
[31mFailed scenarios:[0m\n[31muni/login/Login.feature:3 [0m# Scenario: Enter the system.\n1 Scenarios ([31m1 failed[0m)\n5 Steps ([31m1 failed[0m, [36m4 skipped[0m)\n0m0.185s\n\njava.lang.ExceptionInInitializerError\n    at cucumber.deps.com.thoughtworks.xstream.XStream.setupConverters(XStream.java:820)\n    at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:574)\n    at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:530)\n    at cucumber.runtime.xstream.LocalizedXStreams$LocalizedXStream.<init>(LocalizedXStreams.java:50)\n    at cucumber.runtime.xstream.LocalizedXStreams.newXStream(LocalizedXStreams.java:37)\n    at cucumber.runtime.xstream.LocalizedXStreams.get(LocalizedXStreams.java:29)\n    at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)\n    at cucumber.runtime.Runtime.runStep(Runtime.java:300)\n    at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)\n    at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)\n    at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)\n    at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:102)\n    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)\n    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)\n    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\n    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\n    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\n    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\n    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)\n    at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)\n    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:95)\n    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:38)\n    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\n    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\n    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\n    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\n    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)\n    at cucumber.api.junit.Cucumber.run(Cucumber.java:100)\n    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:93)\n    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:40)\n    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:529)\n    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:756)\n    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)\n    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)\n    at \xe2\x9c\xbd.Given \xd0\x9f\xd0\xbe\xd1\x82\xd1\x80\xd0\xb5\xd0\xb1\xd0\xb8\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8f\xd1\x82 \xd0\xbe\xd1\x82\xd0\xb2\xd0\xb0\xd1\x80\xd1\x8f \xd0\xb5\xd0\xba\xd1\x80\xd0\xb0\xd0\xbd\xd0\xb0 \xd0\xb7\xd0\xb0 \xd0\xb2\xd1\x85\xd0\xbe\xd0\xb4 \xd0\xb2 \xd1\x81\xd0\xb8\xd1\x81\xd1\x82\xd0\xb5\xd0\xbc\xd0\xb0\xd1\x82\xd0\xb0(uni/login/Login.feature:4)\nCaused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.Comparator java.util.TreeMap.comparator accessible: module java.base does not "opens java.util" to unnamed module @74ad1f1f\n    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)\n    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)\n    at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:177)\n    at java.base/java.lang.reflect.Field.setAccessible(Field.java:171)\n    at cucumber.deps.com.thoughtworks.xstream.core.util.Fields.locate(Fields.java:39)\n    at cucumber.deps.com.thoughtworks.xstream.converters.collections.TreeMapConverter.<clinit>(TreeMapConverter.java:50)\n    at cucumber.deps.com.thoughtworks.xstream.XStream.setupConverters(XStream.java:820)\n    at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:574)\n    at cucumber.deps.com.thoughtworks.xstream.XStream.<init>(XStream.java:530)\n    at cucumber.runtime.xstream.LocalizedXStreams$LocalizedXStream.<init>(LocalizedXStreams.java:50)\n    at cucumber.runtime.xstream.LocalizedXStreams.newXStream(LocalizedXStreams.java:37)\n    at cucumber.runtime.xstream.LocalizedXStreams.get(LocalizedXStreams.java:29)\n    at cucumber.runtime.StepDefinitionMatch.runStep(StepDefinitionMatch.java:37)\n    at cucumber.runtime.Runtime.runStep(Runtime.java:300)\n    at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:44)\n    at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:39)\n    at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:44)\n    at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:102)\n    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)\n    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)\n    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\n    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\n    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\n    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\n    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)\n    at cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)\n    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:95)\n    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:38)\n    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)\n    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)\n    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)\n    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)\n    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)\n    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)\n    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)\n    at cucumber.api.junit.Cucumber.run(Cucumber.java:100)\n    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:93)\n    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:40)\n    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:529)\n    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:756)\n    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)\n    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的 pom.xml

\n
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">\n  <modelVersion>4.0.0</modelVersion>\n  <groupId>uni.ais</groupId>\n  <artifactId>first-cucumber-project</artifactId>\n  <version>1.1.0-SNAPSHOT</version>\n  <name>first-cucumber-project-gr</name>\n  <properties>\n    <maven.compiler.target>1.8</maven.compiler.target>\n    <maven.compiler.source>1.8</maven.compiler.source>\n    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n  </properties>\n  <dependencies>\n    <dependency>\n        <groupId>info.cukes</groupId>\n        <artifactId>cucumber-java</artifactId>\n        <version>1.2.5</version>\n    </dependency>\n    <dependency>\n        <groupId>info.cukes</groupId>\n        <artifactId>cucumber-junit</artifactId>\n        <version>1.2.5</version>\n    </dependency>\n  </dependencies>\n</project>\n
Run Code Online (Sandbox Code Playgroud)\n

小智 17

它需要向 jvm 选项添加一些指令。
\n我在idea2022上添加的,这是我的步骤。
\n路径:\n Run\xe2\x80\x94>EditConfigurations\xe2\x80\xa6\xe2\x80\x94>Modify options\xe2\x80\x94>JAVA Add VM options\xe2\x80\x94>VM options
\n选项:\n --add-opens java.base/java.util=ALL-UNNAMED
\n顺便说一句,它还有其他选项:

\n
--add-opens java.base/java.lang=ALL-UNNAMED\n--add-opens java.base/java.nio=ALL-UNNAMED\n--add-opens java.base/sun.nio.ch=ALL-UNNAMED\n
Run Code Online (Sandbox Code Playgroud)\n

希望它可以帮助您解决问题

\n

  • 我错过了你解释为什么要这样做的部分。 (4认同)

Ort*_*ero 14

我解决了我的问题。结果发现 eclipse 自动下载并使用的 JRE 与这个版本的 cucumber 不兼容。我手动更改了 ProgramFilex(x86)/Java 文件夹中 jre 1.8 的路径,现在一切正常。

  • 更好地解决问题的核心。降级Java版本并不是永久的解决方案。 (4认同)

Ben*_*man 5

添加到 @GhostXu 所写的内容,如果您使用 Maven,您可以<argLine>pom.xml. 就像是

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <configuration>
    <argLine>--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED</argLine>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

108032 次

最近记录:

2 年,1 月 前