2014-11-02 4 views
1

Scala IDE Linux - 64 bit For Scala 2.11.2을 다운로드했으며 스칼라 테스트를 실행하려고합니다. 다음은 내 코드입니다.Eclipse에서 Scala Test를 실행하면 예외가 발생합니다.

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의 버전이 2.10이 아닌 scala 2.11 용으로 컴파일되었는지 확인하십시오.

+0

당신은 천재입니다! 하지만 당신이 어떻게 알아 내는지 말해 줄 수 있어요? –

+0

스택 트레이스를 읽는 것만으로. 'NoSuchMethodError'는 항상 존재하지 않는 메소드 (이 경우'Runner $')를 호출하는 클래스가 메소드가 존재하지 않는 다른 버전의 클래스에 대해 컴파일되었다는 것을 의미합니다 (이 경우'$ 콜론 $ 콜론'). 그런 다음 해당 클래스를 검색하여 각각 scalatest 및 scala 표준 라이브러리에 속하는지 확인할 수 있습니다. – lmm

+0

BTW, 그렇게하는 방법은 프로젝트로 가서 마우스 오른쪽 버튼을 클릭 한 다음 속성> 스칼라 컴파일러> 적절한 스칼라 컴파일러 선택> 적용> 확인을 클릭하십시오. – grasshopper