표준 폴더 구조를 사용하여 스칼라에 일반적인 프레임 워크 응용 프로그램이 있다고 가정 해 봅니다. 컴파일 된 테스트를 CI 서버에서 실행하고 싶습니다. 테스트는/tests 폴더에 있습니다. http://www.scalatest.org/user_guide/using_the_runner를 다음 명령 줄 명령 : 나는 다음과 같은 오류 얻을ScalaTest 러너를 사용할 때 클래스 패스를 설정하는 방법
scala -classpath /home/vagrant/.ivy2/ org.scalatest.tools.Runner -R target
: 여기에 설명 된대로 내가 scalatest 러너를 실행하면
는
java.lang.NoClassDefFoundError: scala/concurrent/duration/Duration
at org.scalatest.tools.Runner$.<init>(Runner.scala:741
을 나는 그것이 나에게 말하고 이해 테스트의 일부로 필요한 기간 클래스를 찾을 수 없습니다. 클래스 패스가 classpath에 없기 때문에 클래스 패스를 지정하는 방법이 없으므로 클래스 패스를 지정하는 방법이 아닐 수도 있습니다. 나는 다음과 같이 "대상"의 클래스 경로를 지정 시도
:
scala -classpath /home/vagrant/.ivy2/cache/org.scalatest/scalatest_2.10/jars/scalatest_2.10-2.0.M8.jar:target org.scalatest.tools.Runner -R target
컴파일 된 응용 프로그램 및 테스트가 플레이 프레임 워크 넣어되는 곳 "대상"폴더입니다. 타겟이 유효한 파일 경로이므로 프로젝트의 루트에서이 명령을 실행하고 있습니다.
클래스 패스가 작동하는 방식을 이해하는 데 근본적인 차이가있는 것처럼 보입니다.
EDIT 기간 클래스가 포함 된 클래스 경로에 scala lang jar를 수동으로 추가하여 약간의 성공을 거두었습니다. 하지만 classpath에 모든 jar를 어떻게 추가 할 수 있습니까? 와일드 카드 구문이 있습니까? 여기
scala -classpath "/home/vagrant/.ivy2/cache/org.scalatest/scalatest_2.10/jars/scalatest_2.10-2.0.M8.jar:/home/vagrant/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.10.3.jar" org.scalatest.tools.Runner -R target
java.lang.IncompatibleClassChangeError: Found class scala.collection.mutable.ArrayOps, but interface was expected