IntelliJ java.lang.NoClassDefFoundError: org/hamcrest/SelfDe



是的,在您关闭此线程之前,我已经阅读了所有相同的问题线程,说我需要将hamcrest添加到类路径中。我不明白这意味着什么或如何去做。我有JDK 14,不知道为什么我现在遇到随机问题。我只想做JUnit测试。

"C:Program FilesJavajdk-14.0.1binjava.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.1.1libidea_rt.jar=50007:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.1.1bin" -Dfile.encoding=UTF-8 -classpath "C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.1.1libidea_rt.jar;C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.1.1pluginsjunitlibjunit5-rt.jar;C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.1.1pluginsjunitlibjunit-rt.jar;C:UsersamanuDocumentshackermancmsc420summer20pqueuebin;C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.1.1libjunit-4.12.jar;C:Usersamanu.m2repositoryorgjunitjupiterjunit-jupiter5.4.2junit-jupiter-5.4.2.jar;C:Usersamanu.m2repositoryorgjunitjupiterjunit-jupiter-api5.4.2junit-jupiter-api-5.4.2.jar;C:Usersamanu.m2repositoryorgapiguardianapiguardian-api1.0.0apiguardian-api-1.0.0.jar;C:Usersamanu.m2repositoryorgopentest4jopentest4j1.1.1opentest4j-1.1.1.jar;C:Usersamanu.m2repositoryorgjunitplatformjunit-platform-commons1.4.2junit-platform-commons-1.4.2.jar;C:Usersamanu.m2repositoryorgjunitjupiterjunit-jupiter-params5.4.2junit-jupiter-params-5.4.2.jar;C:Usersamanu.m2repositoryorgjunitjupiterjunit-jupiter-engine5.4.2junit-jupiter-engine-5.4.2.jar;C:Usersamanu.m2repositoryorgjunitplatformjunit-platform-engine1.4.2junit-platform-engine-1.4.2.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 pqueue.StudentTests
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
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:522)
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.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
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:522)
... 18 more

Process finished with exit code -1

编辑

我的困惑是IntelliJ要求我添加hamcrest-core-1.3.jar文件的路径。 hamcrest-core-1.3.jar已经在Java JDK安装中。我认为这意味着Hamcrest已经在项目中使用,这是不正确的假设。

溶液

我去了项目结构 ->依赖项 -> 在 JDK 安装中寻找 hamcrest-> 添加了 hamcrest-core-1.3.jar。

请参阅此文档,描述需要哪些测试库。另一个文档描述了如何将它们添加到模块依赖项中。

基本上,您找到jars或下载它们,然后转到项目结构|模块 |"依赖项"选项卡上,单击 + 按钮并指定 jar 文件的路径。

如果您决定使用 Maven 或 Gradle,则在构建文件中添加测试依赖项更容易,并且将自动下载和配置所有传递依赖项。

试试下面的jar哈姆克雷斯特-2.2.jar- https://search.maven.org/search?q=g:org.hamcrest

最新更新