Java Intellij在运行测试文件时抛出NoClassDefFoundError
测试文件在Eclipse上运行,没有错误。我在IntelliJ上打开了eclipse项目,配置了SDK,并将测试文件夹标记为绿色的测试源文件夹。但是,当我在IntelliJ上运行测试文件时,我得到一个Java Intellij在运行测试文件时抛出NoClassDefFoundError,java,eclipse,intellij-idea,noclassdeffounderror,Java,Eclipse,Intellij Idea,Noclassdeffounderror,测试文件在Eclipse上运行,没有错误。我在IntelliJ上打开了eclipse项目,配置了SDK,并将测试文件夹标记为绿色的测试源文件夹。但是,当我在IntelliJ上运行测试文件时,我得到一个NoClassDefFoundError 测试文件 import static org.junit.Assert.assertEquals; import interviewCakeSolutions.appleStockPro1Solution; import org.junit.Test; p
NoClassDefFoundError
测试文件
import static org.junit.Assert.assertEquals;
import interviewCakeSolutions.appleStockPro1Solution;
import org.junit.Test;
public class appleStockPro1SolutionTester {
@Test
public void testGivenInput() {
int[] testInput = new int[] {10, 7, 5, 8, 11, 9};
int actual = appleStockPro1Solution.getMaxProfit(testInput);
int expected = 6;
assertEquals(expected, actual);
}
}
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
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)
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
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)
... 21 more
Process finished with exit code 255
访谈cakesolution.iml
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/bin" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library name="junit4">
<CLASSES>
<root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.12.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
我也有同样的问题。原因很明显是同一个项目中的另一个类(测试不需要它)有错误。这使得编译器无法编译所需的类。我通过更改为Eclipse编译器并检查错误时继续(设置->构建、执行、部署->编译器->Java编译器)解决了这个问题
您能将stacktrace包括在内吗?您是只在运行控制台中获取stacktrace,还是测试也失败了?@Mureinik在我的文章底部添加了stack tracequestion@RomanPuchkovskiy是的,我在跑步控制台中获得stacktrace。测试没有运行,正如错误所示,您需要将hamcrest(hamcrest core 1.3,如pom所示:)添加到类路径中,因为JUnit依赖于它。JUnit的安装指南也解释了这一点,顺便说一下: