我正在使用安装了 Scala 2.9.3 插件的 eclipse。
我有一个 Scala 项目,它在 Eclipse 中运行良好,但是当我将项目导出到“可运行的 JAR 文件”并尝试运行它时,出现以下异常:
java.lang.NoClassDefFoundError: scala/ScalaObject
我尝试了所有 3 个库处理选项:
- 提取所需的库...
- 打包所需的库...
- 复制所需的库...
所有人都以相同的异常告终。
为了从我的项目中制作独立的 JAR 文件,我需要做什么?
我正在使用安装了 Scala 2.9.3 插件的 eclipse。
我有一个 Scala 项目,它在 Eclipse 中运行良好,但是当我将项目导出到“可运行的 JAR 文件”并尝试运行它时,出现以下异常:
java.lang.NoClassDefFoundError: scala/ScalaObject
我尝试了所有 3 个库处理选项:
所有人都以相同的异常告终。
为了从我的项目中制作独立的 JAR 文件,我需要做什么?
如果您使用 SBT 来维护和构建您的项目,那么就像pedrofurla建议的那样,您应该尝试sbt-assembly插件。在最简单的情况下,只需将以下内容添加到您的项目构建中(我更喜欢Build.scala,但*.sbt看起来相同):
1)进口:
import sbtassembly.Plugin._
import AssemblyKeys._
2)设置:
mainClass in assembly := Some("path.to.MainClass")
jarName in assembly := "jar-name.jar"
3)如果要发布工件:
artifact in (Compile, assembly) ~= { art =>
art.copy(`classifier` = Some("assembly"))
} // add classifier
然后是您的发布任务:
lazy val publishingSettings = addArtifact(artifact in (Compile, assembly), assembly) ++ Seq(
publishTo := /* your repository settings */
)
assembly获取一体化 jar 文件或发布以将其发布到您的存储库的调用。那应该工作
我过去使用过sbt-assembly插件,我发现它很容易使用。