添加 scala-compiler.jar 作为运行时依赖项
Posted
技术标签:
【中文标题】添加 scala-compiler.jar 作为运行时依赖项【英文标题】:Adding scala-compiler.jar as a runtime dependency 【发布时间】:2011-08-25 08:36:49 【问题描述】:我正在使用 sbt 及其 Proguard 插件为我的程序创建一个可执行的 jar。但是,我的程序在运行时依赖scala-compiler.jar
进行编译。我似乎无法将scala-compiler.jar
放入我的最后一个罐子中。 This page 有一些非常相似的信息,但我无法让它从头到尾工作。有什么建议吗?
编辑:这是我得到的最接近的:
override def proguardOptions = List(
"-dontshrink -dontoptimize -dontobfuscate -dontpreverify -dontnote " +
"-ignorewarnings",
proguardKeepAllScala
)
override def proguardInJars =
Path.fromFile(scalaLibraryJar) +++
Path.fromFile(FileUtilities.scalaCompilerJar) +++
super.proguardInJars
这包括 proguard min jar 中的编译器 jar,但运行它我仍然得到:
Exception: java.lang.NoClassDefFoundError: scala/tools/nsc/settings/Scala Settings
【问题讨论】:
没有人会(或不应该......)帮助你,除非你说出你尝试了什么以及它失败的原因。 我尝试了链接到的页面上的东西。它在运行时因“scala.tools.nsc ..... not found”而失败。 具体来说,Exception: java.lang.NoClassDefFoundError: scala/tools/nsc/settings/Scala Settings
【参考方案1】:
这可行,但对调用 sbt
的位置很敏感:
//proguard
override def proguardOptions = List(
"-dontshrink -dontoptimize -dontobfuscate -dontpreverify -dontnote " +
"-ignorewarnings",
proguardKeepAllScala
)
val cur = new File(".").getAbsolutePath
override def proguardInJars =
Path.fromFile(scalaLibraryJar) +++
Path.fromFile(
new File(cur, "project/boot/scala-" + crossScalaVersionString +
"/lib/scala-compiler.jar")) +++
super.proguardInJars
我无法使用FileUtilities.scalaCompiler
Jar,因为它得到了 sbt 使用的 2.7.7 jar,而不是跨 scala 版本编译器。
【讨论】:
以上是关于添加 scala-compiler.jar 作为运行时依赖项的主要内容,如果未能解决你的问题,请参考以下文章