在使用 sbt 构建 scala 项目时,在类路径中包含非托管 jar
Including unmanaged jars on classpath, when building scala project using sbt
我正在尝试构建一个旧项目。
该项目依赖于在 sparrow-1.0.jar
中找到的 java 包
我将 jar 复制到 lib_managed/jars
和 lib
目录,但是在编译时我仍然遇到缺少 class 路径错误。
project/SparkBuild.sbt
包含对 lib
目录的引用
unmanagedJars in Compile <<= baseDirectory map { base => (base / "lib" ** "*.jar").classpath },
以及./lib
的内容
root@26eefef538b1:/sparrow/spark-sparrow# tree -D lib
lib
|-- jars
| `-- sparrow-1.0-SNAPSHOT.jar
|-- sparrow-1.0-SNAPSHOT.jar
`-- sparrow.jar
然而,当我编译时,我仍然得到同样的错误:
root@26eefef538b1:/sparrow/spark-sparrow# sbt/sbt package assembly
[info] Loading project definition from /sparrow/spark-sparrow/project/project
[info] Loading project definition from /sparrow/spark-sparrow/project
[info] Set current project to root (in build file:/sparrow/spark-sparrow/)
[info] Compiling 260 Scala sources and 16 Java sources to /sparrow/spark-sparrow/core/target/scala-2.9.3/classes...
[error] /sparrow/spark-sparrow/core/src/main/scala/spark/scheduler/sparrow/SparrowScheduler.scala:28: not found: object edu
[error] import edu.berkeley.sparrow.thrift.FrontendService
[error] ^
是否有命令行选项或其他配置我缺少导入添加 class从 jars 到项目的路径?
该项目是针对 scala 2.9.3
使用 sbt 0.12.3
编译的
我注意到我可以 运行 scala 使用 class 路径上的 jar 并导入对象。
root@26eefef538b1:/sparrow/spark-sparrow# scala -cp $SPARROW_JAR
Welcome to Scala version 2.9.3 (OpenJDK 64-Bit Server VM, Java 1.7.0_201).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import edu.berkeley.sparrow.thrift.FrontendService
import edu.berkeley.sparrow.thrift.FrontendService
scala>
正在将 lib 目录和 jar 添加到子目录中。
例如./core/lib/sparrow.jar
好像解决了问题
我正在尝试构建一个旧项目。
该项目依赖于在 sparrow-1.0.jar
我将 jar 复制到 lib_managed/jars
和 lib
目录,但是在编译时我仍然遇到缺少 class 路径错误。
project/SparkBuild.sbt
包含对 lib
目录的引用
unmanagedJars in Compile <<= baseDirectory map { base => (base / "lib" ** "*.jar").classpath },
以及./lib
root@26eefef538b1:/sparrow/spark-sparrow# tree -D lib
lib
|-- jars
| `-- sparrow-1.0-SNAPSHOT.jar
|-- sparrow-1.0-SNAPSHOT.jar
`-- sparrow.jar
然而,当我编译时,我仍然得到同样的错误:
root@26eefef538b1:/sparrow/spark-sparrow# sbt/sbt package assembly
[info] Loading project definition from /sparrow/spark-sparrow/project/project
[info] Loading project definition from /sparrow/spark-sparrow/project
[info] Set current project to root (in build file:/sparrow/spark-sparrow/)
[info] Compiling 260 Scala sources and 16 Java sources to /sparrow/spark-sparrow/core/target/scala-2.9.3/classes...
[error] /sparrow/spark-sparrow/core/src/main/scala/spark/scheduler/sparrow/SparrowScheduler.scala:28: not found: object edu
[error] import edu.berkeley.sparrow.thrift.FrontendService
[error] ^
是否有命令行选项或其他配置我缺少导入添加 class从 jars 到项目的路径?
该项目是针对 scala 2.9.3
使用 sbt 0.12.3
我注意到我可以 运行 scala 使用 class 路径上的 jar 并导入对象。
root@26eefef538b1:/sparrow/spark-sparrow# scala -cp $SPARROW_JAR
Welcome to Scala version 2.9.3 (OpenJDK 64-Bit Server VM, Java 1.7.0_201).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import edu.berkeley.sparrow.thrift.FrontendService
import edu.berkeley.sparrow.thrift.FrontendService
scala>
正在将 lib 目录和 jar 添加到子目录中。
例如./core/lib/sparrow.jar
好像解决了问题