1

我正在使用安装了 Scala 2.9.3 插件的 eclipse。
我有一个 Scala 项目,它在 Eclipse 中运行良好,但是当我将项目导出到“可运行的 JAR 文件”并尝试运行它时,出现以下异常:

java.lang.NoClassDefFoundError: scala/ScalaObject

我尝试了所有 3 个库处理选项:

  • 提取所需的库...
  • 打包所需的库...
  • 复制所需的库...

所有人都以相同的异常告终。

为了从我的项目中制作独立的 JAR 文件,我需要做什么?

4

2 回答 2

1

如果您使用 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 文件或发布以将其发布到您的存储库的调用。那应该工作

于 2013-07-22T07:49:55.860 回答
1

我过去使用过sbt-assembly插件,我发现它很容易使用。

于 2013-07-22T04:03:17.750 回答