Java 使用ScalaTest运行程序时如何设置类路径
假设我在Scala中有一个使用标准文件夹结构的典型框架应用程序。我想在CI服务器上运行已编译的测试-这些测试位于/tests文件夹中 当我运行scalatest runner时,如下所述:使用以下命令行命令:Java 使用ScalaTest运行程序时如何设置类路径,java,scala,classpath,sbt,scalatest,Java,Scala,Classpath,Sbt,Scalatest,假设我在Scala中有一个使用标准文件夹结构的典型框架应用程序。我想在CI服务器上运行已编译的测试-这些测试位于/tests文件夹中 当我运行scalatest runner时,如下所述:使用以下命令行命令: scala -classpath /home/vagrant/.ivy2/ org.scalatest.tools.Runner -R target 我得到以下错误: java.lang.NoClassDefFoundError: scala/concurrent/duration/Du
scala -classpath /home/vagrant/.ivy2/ org.scalatest.tools.Runner -R target
我得到以下错误:
java.lang.NoClassDefFoundError: scala/concurrent/duration/Duration
at org.scalatest.tools.Runner$.<init>(Runner.scala:741
“target”文件夹是为play框架放置已编译应用程序和测试的地方。我从项目的根目录运行该命令,因此目标是有效的文件路径
看起来我在理解类路径如何工作方面有一个基本的差距
编辑
通过手动将scala lang jar添加到包含duration类的类路径,我获得了一些成功。但是如何将所有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
以下是如何使用
Runner
运行测试套件:
下面是如何轻松地将多个jar文件添加到类路径:
以下是如何使用
Runner
运行测试套件:
下面是如何轻松地将多个jar文件添加到类路径:
获取所有依赖项的类路径,包括:
DEPS=$(sbt --error "export compile:dependencyClasspath")
然后运行测试:
java -cp "<path to scalatest.jar>":$DEPS org.scalatest.tools.Runner -R target
java-cp”“:$DEPS org.scalatest.tools.Runner-R目标
其中
类似于/home/user/project/.ivy2/cache/org.scalatest/scalatest\u 2.11/bundles/scalatest\u 2.11-2.2.6.jar
是的,您可以使用
java
,而不是scala
,因为$DEPS
已经包含所有scala库。获取所有依赖项的类路径,包括:
DEPS=$(sbt --error "export compile:dependencyClasspath")
然后运行测试:
java -cp "<path to scalatest.jar>":$DEPS org.scalatest.tools.Runner -R target
java-cp”“:$DEPS org.scalatest.tools.Runner-R目标
其中
类似于/home/user/project/.ivy2/cache/org.scalatest/scalatest\u 2.11/bundles/scalatest\u 2.11-2.2.6.jar
是的,您可以使用
java
,而不是scala
,因为$DEPS
已经包含了所有scala库。这很有帮助!我们的build.sbt文件管理多个项目,因此我从您的export命令中获得了多行输出,我这样做是为了我们的单元测试,因此我最终不得不将此命令用于项目xyz
:sbt--error“export xyz/test:dependencyClasspath”
这很有帮助!我们的build.sbt文件管理多个项目,因此我从您的导出命令中获得了多行输出,并且我正在为我们的单元测试执行此操作,因此我不得不将此命令用于项目xyz
:sbt--错误“export xyz/test:dependencyClasspath”