在Scala IDE(Eclipse Kepler)上运行Scala JUnit Test时出现java.lang.NoClassDefFoundError

时间:2014-04-18 15:09:16

标签: eclipse scala junit

我最近决定安装Scala IDE 3.0.3(基本上是带有scala插件的Eclipse Kepler)。我有最新的规范(specs2_2.10-23.11),scalaz(2.10-7.0.4),集合(scalaj-collection_2.10-1.5)和scala库[2.10.4]

我尝试使用" Scala JUnit Test"在scala中运行我的测试。但我得到了这个错误

  

java.lang.NoClassDefFoundError:scalaz / concurrent / Strategy $ at   org.specs2.reporter.DefaultExecutionStrategy $$ anonfun $ $执行1 $$ anonfun $ 2.适用(ExecutionStrategy.scala:43)     在   org.specs2.reporter.DefaultExecutionStrategy $$ anonfun $ $执行1 $$ anonfun $ 2.适用(ExecutionStrategy.scala:41)     在   scala.collection.LinearSeqOptimized $ class.foldLeft(LinearSeqOptimized.scala:111)     在scala.collection.immutable.List.foldLeft(List.scala:84)at   org.specs2.reporter.DefaultExecutionStrategy $$ anonfun $执行$ 1.适用(ExecutionStrategy.scala:41)     在   org.specs2.reporter.DefaultExecutionStrategy $$ anonfun $执行$ 1.适用(ExecutionStrategy.scala:38)     在scalaz.syntax.IdOps $ class。$ bar $ greater(IdOps.scala:15)at at   scalaz.syntax.ToIdOps $$ anon $ 1. $ bar $ greater(IdOps.scala:78)at at   org.specs2.reporter.JUnitReporter $ class.report(JUnitReporter.scala:44)     at org.specs2.runner.JUnitRunner $$ anon $ 4.report(JUnitRunner.scala:43)     在org.specs2.runner.JUnitRunner.run(JUnitRunner.scala:50)at at   org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)     在   org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

     

引起:java.lang.ClassNotFoundException:   scalaz.concurrent.Strategy $ at java.net.URLClassLoader $ 1.run(未知   来自java.security.AccessController.doPrivileged(Native Method)     在java.net.URLClassLoader.findClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)at   sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)at   java.lang.ClassLoader.loadClass(未知来源)......还有17个

是什么造成的?我可能错过了一些东西,但我无法找到。

我的测试用gradle运行得很好。

1 个答案:

答案 0 :(得分:1)

好吧也许有人会觉得它很有帮助。我找到了解决方案:我错过了scalaz-concurrent jar,这显然不包含在scalaz-core中。请注意,您需要使用相同版本的coreconcurrent才能工作。