无法使字段 private Final java.util.Comparator java.util.TreeMap.comparator 可访问:java.base 不会向未命名模块“打开 java.util”

Анн*_*вич 30 java bdd cucumber selenium-webdriver

我创建了一个 Cucumber 功能文件和步骤文件,然后单击功能文件的“运行配置”,我在控制台中看到以下内容。我怎么解决这个问题?

\n
*Feature: Login into account\n  Existing user should be able to login to account using correct credentials\n  \nScenario: Login into account with correct credentials     # C:/Users/MI/Desktop/CucumberFramework/CucumberFramework/src/test/java/CucumberFramework/featureFiles/Login.feature:4\n    \nGiven User navigates to stackoverflow website           # LoginSteps.user_navigates_to_stackoverflow_website()\n      java.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.model.CucumberFeature.run(CucumberFeature.java:165)\n        at cucumber.runtime.Runtime.run(Runtime.java:122)\n        at cucumber.api.cli.Main.run(Main.java:36)\n        at cucumber.api.cli.Main.main(Main.java:18)\n        at \xe2\x9c\xbd.Given User navigates to stackoverflow website(C:/Users/MI/Desktop/CucumberFramework/CucumberFramework/src/test/java/CucumberFramework/featureFiles/Login.feature:5)\n     \n Caused 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 @5afa04c\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.model.CucumberFeature.run(CucumberFeature.java:165)\n        at cucumber.runtime.Runtime.run(Runtime.java:122)\n        at cucumber.api.cli.Main.run(Main.java:36)\n        at cucumber.api.cli.Main.main(Main.java:18)\n    \nAnd User clicks on the login button on homepage         # LoginSteps.user_clicks_on_the_login_button_on_homepage()\n    \nAnd User enters a valid username                        # LoginSteps.user_enters_a_valid_username()\n    \nAnd User enters a valid password                        # LoginSteps.user_enters_a_valid_password()\n    \nWhen User clicks on the login button                    # LoginSteps.user_clicks_on_the_login_button()\n    \nThen User should be taken to the successfull login page # LoginSteps.user_should_be_taken_to_the_successfull_login_page()\n\nFailed scenarios:\nC:/Users/MI/Desktop/CucumberFramework/CucumberFramework/src/test/java/CucumberFramework/featureFiles/Login.feature:4 # Scenario: Login into account with correct credentials\n1 Scenarios (1 failed)\n6 Steps (1 failed, 5 skipped)\n0m0,357s\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.model.CucumberFeature.run(CucumberFeature.java:165)\n    at cucumber.runtime.Runtime.run(Runtime.java:122)\n    at cucumber.api.cli.Main.run(Main.java:36)\n    at cucumber.api.cli.Main.main(Main.java:18)\n    at \xe2\x9c\xbd.Given User navigates to stackoverflow website(C:/Users/MI/Desktop/CucumberFramework/CucumberFramework/src/test/java/CucumberFramework/featureFiles/Login.feature:5)\n\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 @5afa04c\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.model.CucumberFeature.run(CucumberFeature.java:165)\n    at cucumber.runtime.Runtime.run(Runtime.java:122)\n    at cucumber.api.cli.Main.run(Main.java:36)\n    at cucumber.api.cli.Main.main(Main.java:18)*\n
Run Code Online (Sandbox Code Playgroud)\n

Asa*_*gen 26

我没有安装 Cucumber 功能,因此我的设置中的问题与它无关。对我有帮助的是更新我的 pom 文件中的 Maven 插件设置,如下所示。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>3.3.1</version>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)


mpk*_*nje 7

您的 Cucumber 版本与 Java 版本不兼容。升级 Cucumber 或降级 Java。

由于您正在测试的场景,我猜测您正在遵循旧的教程。这个是最新的:

https://cucumber.io/docs/guides/10-min-tutorial/


Enl*_*lem 6

这解决了我的问题:将 maven-war-plugin 更新到 3.2.3

mvn org.apache.maven.plugins:maven-war-plugin:3.2.3