3

sbtとそのProguardプラグインを使用して、プログラムの実行可能jarを作成しています。scala-compiler.jarただし、私のプログラムは実行時にコンパイルを行うことに依存しています。scala-compiler.jar私は私の最後の瓶に入ることができないようです。このページには非常によく似た情報がいくつかありますが、最初から最後まで機能させることができません。助言がありますか?

編集:これは私が得た最も近いものです:

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
4

1 に答える 1

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クロススカラバージョンのコンパイラではなく、sbtが使用する2.7.7 jarを取得するため、Jarを使用できませんでした。

于 2011-05-14T17:14:02.463 に答える