Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ScalaTest运行程序时如何设置类路径_Java_Scala_Classpath_Sbt_Scalatest - Fatal编程技术网

Java 使用ScalaTest运行程序时如何设置类路径

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中有一个使用标准文件夹结构的典型框架应用程序。我想在CI服务器上运行已编译的测试-这些测试位于/tests文件夹中

当我运行scalatest runner时,如下所述:使用以下命令行命令:

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”