Question

J'utilise sbt et son plugin Proguard pour créer un fichier jar exécutable pour mon programme.Cependant, mon programme repose sur scala-compiler.jar au moment de l'exécution pour faire des compilations.Je n'arrive pas à comprendre scala-compiler.jar dans mon dernier pot. Cette page a des informations très similaires mais je n'arrive pas à le faire fonctionner du début à la fin.Aucune suggestion?

MODIFIER:C'est ce qui s'en rapproche le plus que j'ai obtenu :

override def proguardOptions = List(
  "-dontshrink -dontoptimize -dontobfuscate -dontpreverify -dontnote " +
  "-ignorewarnings",
  proguardKeepAllScala
)
override def proguardInJars =
  Path.fromFile(scalaLibraryJar) +++
  Path.fromFile(FileUtilities.scalaCompilerJar) +++
  super.proguardInJars

Cela inclut le fichier jar du compilateur dans le fichier jar proguard min, mais en l'exécutant, j'obtiens toujours :

Exception: java.lang.NoClassDefFoundError: scala/tools/nsc/settings/Scala Settings
Était-ce utile?

La solution

Cela fonctionne, mais est sensible à l'emplacement à partir duquel sbt est appelé:

//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

je ne pouvais pas utiliser FileUtilities.scalaCompilerJar parce que cela obtient le pot 2.7.7 utilisé par sbt, pas le compilateur de version cross scala.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top