<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.0.1</version>
<scope>test</scope>
</dependency>
当我运行一个JUnit5测试时,我得到以下错误:
java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 11 more
通过挖掘堆栈溢出和其他站点,我仍然不太确定我遗漏了什么。如果有什么不同的话,我将使用Java8。
我继续这样做,让eclipse将库本身添加到一个示例非Maven项目中,看看我缺少了什么。经过一些实验,下面是在Eclipse中运行junit测试所需的pom的最小依赖项。
请注意,这并不会自动使junit测试在maven surfire中工作,只是Eclipse。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.0.1</version>
<scope>test</scope>
</dependency>
是的,我完全知道junit-jupiter-engine可以传递地引入junit-jupiter-api,但是由于我是在测试编译时使用它的,所以包含它是一个很好的实践。
我正在eclipse中建立一个项目。此项目通过命令行成功构建(所有、、)等命令都运行良好。同时在STS或Eclipse上设置此项目。我看到有些依赖项没有下载,尽管它们存在于中。但是,在maven存储库中搜索它们,并将jar下载到我的本地计算机,然后将它们添加到构建路径中,就可以在Eclipse上运行。 我们需要对eclipse做什么来确保它从存储库下载所有的依赖项。 我的POM:
我有一个包含以下文件的Java项目: C:\MyProject\myPackage\MyTests.class C:\MyProject\lib\junit-platform-console-standalone-1.5.2.jar C:\MyProject\lib\other-library.jar MyTests 文件是使用 IDE 编译的,该 IDE 具有 junit-platform-co
我创建了一个Maven项目(可重用库),该项目有许多依赖项(编译时和运行时),它们也可以过渡地依赖于其他许多依赖项。在maven中,我可以在pom中添加依赖项。xml及其可传递依赖关系将自动处理。所以,我将毫无问题地运行。 现在,我有一个非Maven(基于Ant的)项目,上面创建的库(Maven Lib)将使用它。 在这种情况下,运行时间
问题内容: 在Maven中,项目的依赖项在pom.xml文件中指定。在IntelliJ IDEA中,即使对于Maven项目,相同的信息也存储在iml文件中。在两个地方具有相同的信息有什么需要? 问题答案: 导入Maven项目时,IDEA以其可以在内部理解和使用的格式表示其依赖关系模型。如果通过Maven管理依赖关系,则无需在IntelliJ IDEA模块设置中更改依赖关系。 这也可以用来试验依赖项
我认为配置文件很少,Tycho依赖其中的一些,Eclipse依赖其余的,但我不确定是什么。 第二种方法是删除项目中的所有jar,但将它们添加到或中。但是,这两个包都不起作用,因为在节中,Eclipse会抱怨这些包不存在。因此,依赖于此项目将找不到它们需要的包,这在Eclipse中导致了更多的错误。 有人知道处理这个问题的最佳做法吗?
问题内容: 我使用Maven开发和构建了Java应用程序。我需要支持Java 1.6,因此我使用以下属性: 尽管如此,当我运行该应用程序时,仍然出现“不受支持的major.minor版本”错误,并且我怀疑我的一个依赖罐是使用比我需要支持的Java版本更新的Java版本进行编译的。 我的问题: 这有可能吗?我以为Maven会解决这种依赖版本问题。 有没有一种简单的方法来找出我所有依赖项的次要/主要版