【发布时间】:2019-09-03 10:32:09
【问题描述】:
我正在尝试构建一个旧项目。
项目依赖于sparrow-1.0.jar中的一个java包
我将 jar 复制到 lib_managed/jars 和 lib 目录,但是在编译时仍然出现缺少类路径的错误。
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] ^
我是否缺少用于将添加类路径从 jar 导入项目的命令行选项或其他配置?
项目是使用sbt 0.12.3针对scala 2.9.3编译的
我注意到我可以使用类路径上的 jar 运行 scala 并导入对象。
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>
【问题讨论】:
-
unmanaged 库的目录是
lib,尝试使用它或更改 SBT 中的文件夹。请参阅this 了解更多信息。 -
谢谢 我也尝试将 jar 放在与项目根目录相同的目录中。都没有用。
-
你使用的是什么版本的 sbt?您是否尝试过注释掉
unmanagedJars行?如果罐子在lib,则不需要指定。 -
我在评论
unmanagedJars行时遇到了同样的错误。scala 2.9.2和sbt 0.12.3
标签: java scala apache-spark sbt sbt-assembly