我正在尝试在Eclipse中设置我的第一个Cucumber项目。我按照教程视频建议的方式在feature文件夹中设置了一个基本功能文件,但尝试将其作为cucumber功能执行时,得到了以下结果:
Exception in thread "main" java.lang.NoClassDefFoundError: gherkin/formatter/Formatter
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:821)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:719)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:642)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:600)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at cucumber.runtime.formatter.PluginFactory$1.<init>(PluginFactory.java:53)
at cucumber.runtime.formatter.PluginFactory.<clinit>(PluginFactory.java:52)
at cucumber.runtime.RuntimeOptions.<init>(RuntimeOptions.java:70)
at cucumber.api.cli.Main.run(Main.java:31)
at cucumber.api.cli.Main.main(Main.java:18)
Caused by: java.lang.ClassNotFoundException: gherkin.formatter.Formatter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 14 more我已经按照我正在观看的教程视频中列出的所有步骤进行了操作,但没有成功。我安装了以下软件:
Eclipse 2019-12,Java SE 13
我在本地下载并安装了所有的jar文件。我读到过大量可能相互干扰的jar文件可能会产生冲突,因此我将所有jar文件更新为最新版本。还是没有帮助。然后,我一次删除一个已安装的jars,并尝试再次运行,直到我达到最基本的必需品。问题仍然存在。
以下是我的设置的一个片段:
Snapshot of my project in Eclipse
我乐于接受别人能提供的任何帮助
发布于 2020-02-15 03:09:46
我在本地下载并安装了所有的jar文件。我读到过大量可能相互干扰的jar文件可能会产生冲突,因此我将所有jar文件更新为最新版本。还是没有帮助。然后,我一次删除一个已安装的jars,并尝试再次运行,直到我达到最基本的必需品。问题仍然存在。
如果您遵循10 minute tutorial,您将获得使用Maven依赖项管理的介绍。
除了本教程之外,我强烈建议您投入时间学习Maven或Gradle以及Cucumber。其中,这些工具将自动化你的依赖管理,这可以让你的生活变得更容易。
例如:
如果您想在Maven4和基于注释的步骤定义中使用JUnit,那么可以在pom.xml文件中声明这组最小的依赖项。
<properties>
<cucumber.version>5.2.0</cucumber.version>
</properties>
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
</dependencies>通过告诉Maven您的依赖关系是什么,Maven可以计算您的传递依赖关系,即:依赖关系的依赖关系。
这有很多优点。一个例子是使用mvn dependency:tree命令来列出所有依赖项。与手动下载jar文件并希望您拥有正确的jar文件相比,这要快得多,也不容易出错。
$ mvn dependency:tree
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< cucumber:cucumber-java-skeleton >-------------------
[INFO] Building Cucumber-Java Skeleton 0.0.1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ cucumber-java-skeleton ---
[INFO] cucumber:cucumber-java-skeleton:jar:0.0.1
[INFO] +- io.cucumber:cucumber-java:jar:5.2.0:test
[INFO] | +- io.cucumber:cucumber-core:jar:5.2.0:test
[INFO] | | +- io.cucumber:cucumber-gherkin:jar:5.2.0:test
[INFO] | | +- io.cucumber:cucumber-gherkin-vintage:jar:5.2.0:test
[INFO] | | +- io.cucumber:tag-expressions:jar:2.0.4:test
[INFO] | | +- io.cucumber:cucumber-expressions:jar:8.3.1:test
[INFO] | | +- io.cucumber:datatable:jar:3.3.0:test
[INFO] | | +- io.cucumber:cucumber-plugin:jar:5.2.0:test
[INFO] | | \- io.cucumber:docstring:jar:5.2.0:test
[INFO] | \- org.apiguardian:apiguardian-api:jar:1.1.0:test
[INFO] +- io.cucumber:cucumber-junit:jar:5.2.0:test
[INFO] \- junit:junit:jar:4.13:test
[INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.781 s
[INFO] Finished at: 2020-02-10T23:00:14+01:00
[INFO] ------------------------------------------------------------------------https://stackoverflow.com/questions/60183575
复制相似问题