【发布时间】:2016-05-20 19:11:55
【问题描述】:
我使用的是 scala 版本 2.11.4,我尝试了各种选项,例如 sbt-assembly、构建工件(Intellij Idea 功能)、sbt 包。不幸的是,它们都没有对我起作用。
我尝试了以下事情:
- 使用 sbt-assembly:
创建了 assembly.sbt 文件并添加了以下行:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.12.0")
build.sbt:
scalaVersion in ThisBuild := "2.11.4"
resolvers += Resolver.url("bintray-sbt-plugins", url("http://dl.bintray.com/sbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
ivyScala := ivyScala.value map { _.copy(overrideScalaVersion = true) }
我收到以下错误
[warn] Note: Some unresolved dependencies have extra attributes. Check that these dependencies exist with the requested attributes.
[warn] com.eed3si9n:sbt-assembly:0.12.0 (sbtVersion=0.13, scalaVersion=2.11)
- 具有使用 Intellij Idea 15 的“构建工件”功能
能够创建一个罐子。但是,无法执行它。出现以下错误:
Invalid or corrupt jarfile
为此,我尝试了命令:java -jar JAR_FILE
- 使用 sbt 包:
能够创建 JAR。但是,无法执行它。出现以下错误:
java.lang.NoClassDefFoundError scala/Function0
我正在尝试使用命令:
java -cp scala-library.jar -jar JAR_FILE
已解决
我可以通过切换到 scala 版本 2.10.5 来创建 jar,然后使用 sbt-assembly 插件。对没有可用的解决方案来使用最新版本的 scala 创建可执行 jar 的事实感到有些失望。
【问题讨论】:
-
sbt-assembly 正是解决此问题的正确工具,如果我没记错的话,它的默认配置是 bundles scala,那么你到底做了什么?发生了什么?
-
sbt-assembly 似乎不适用于 scala 版本 2.11.4。我收到错误:[警告] 注意:一些未解决的依赖项有额外的属性。检查这些依赖项是否与请求的属性一起存在。 [警告] com.eed3si9n:sbt-assembly:0.12.0 (sbtVersion=0.13, scalaVersion=2.11) [警告] 我在 assembly.sbt addSbtPlugin("com.eed3si9n" %% "sbt-assembly" % "0.12.0") 和 build.sbt 解析器中的以下行 += Resolver.url("bintray-sbt-plugins", url("dl.bintray.com/sbt/…
-
您的装配结构如何?它有一个主类吗?你能在这里展示一下吗?这是用于客户端/桌面还是服务器?
-
对于 sbt 汇编,你不需要行 "resolvers += ... " 和 "ivyScala := ... ",绝对不是最新版本,以及 sbt 0.13.6 或更高版本。如果您从一些较旧的示例中复制它们,只需将它们删除即可。
-
你有哪个版本的 sbt?根据 sbt 组装网站 sbt 0.13.6 和更新版本应该使用不同版本的 sbt。确保您正在运行当前版本的 sbt 并根据他们的网站配置程序集:github.com/sbt/sbt-assembly
标签: scala jar sbt executable-jar