我正在使用sbt及其Proguard插件为我的程序创建一个可执行jar。但是,我的程序在运行时依赖scala-compiler.jar
进行编译。我似乎无法将scala-compiler.jar
放入我的最终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
最佳答案
这可行,但对调用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 - 将scala-compiler.jar添加为运行时依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5999412/