2014-11-02 80 views
1

我下载了Scala IDE Linux - 64 bit For Scala 2.11.2并试图运行Scala测试。以下是我的代码。从Eclipse运行Scala测试时发生异常

package ppg.experiment.gameofbusiness.engine 

import org.scalatest.FlatSpec 
import org.scalatest.Matchers 

class DiceSpec extends FlatSpec with Matchers { 

    "A dice" should "roll a value greater than zero" in { 
    new Dice().roll > 0 
    } 
    it should "roll a value less than six" in { 
    new Dice().roll < 7 
    } 
} 

当我点击右键并运行作为斯卡拉测试打印控制台

WARNING: -p has been deprecated and will be reused for a different (but still very cool) purpose in ScalaTest 2.0. Please change all uses of -p to -R. 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at scala.tools.eclipse.scalatest.launching.ScalaTestLauncher$.main(ScalaTestLauncher.scala:58) 
    at scala.tools.eclipse.scalatest.launching.ScalaTestLauncher.main(ScalaTestLauncher.scala) 
Caused by: java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object; 
    at org.scalatest.tools.Runner$.argTooShort$1(Runner.scala:1515) 
    at org.scalatest.tools.Runner$.parseReporterArgsIntoConfigurations(Runner.scala:1532) 
    at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:923) 
    at org.scalatest.tools.Runner$.main(Runner.scala:860) 
    at org.scalatest.tools.Runner.main(Runner.scala) 
    ... 6 more 

有人能告诉我如何解决这个问题,以下?

回答

6

检查你的类路径;特别是检查你所依赖的scalatest版本是否为scala 2.11编译,而不是2.10。

+0

你是一个天才!但你能告诉我你是怎么想出来的? – 2014-11-02 17:50:42

+0

只需阅读堆栈跟踪。一个'NoSuchMethodError'总是意味着调用不存在的方法的类(在本例中为'Runner $')是针对方法不存在的不同版本的类进行编译的(在这种情况下,“$结肠$ colon')。然后你可以查看这些类,看看它们分别属于scalatest和scala标准库。 – lmm 2014-11-03 00:09:42

+0

顺便说一句,要做到这一点的方法是去你的项目和右键单击,然后属性> Scala编译器>选择适当的scala编译器>应用>确定 – grasshopper 2015-02-12 20:09:30

相关问题