2010-06-11 14 views
19

Was ist der einfachste Weg, eine Scala-Anwendung für die Verwendung auf einem Desktop-PC zu paketieren? Ich vermute, das wäre in Form einer JAR-Datei.Verpacken und Bereitstellen von Scala-Anwendungen

Im Moment bin SBT bin mit Programme zu kompilieren und auszuführen

ich für Maschinen in Lösungen interessiert sein würde, die Scala installiert haben (und die Bibliothek in ihrem Classpath), als auch solche, die nur haben Java.

Antwort

9

Die einfachste (und konsistenteste) Methode zum Packen einer Scala-Anwendung ist das Packen in eine JAR (wie bei normalen Java-Anwendungen). Solange JAR aus standardkompilierten Java-Klassen besteht, können Sie "Scala" JAR ausführen, auch wenn Sie keine Scala-Laufzeitumgebung in der Box haben (Sie benötigen lediglich eine Java-Laufzeit und scala-lang.jar im Klassenpfad). Sie können die Hauptklasse (Gateway-Funktionalitäten Ihrer Anwendung) angeben, in den manifast

Main-Class: mypackage.MyClass 

, so dass Sie in der Lage sein werden, nennt es nur einen JAR-Namen java.exe vorbei.

java -jar myjar.jar 

Sie können specify the main class in SBT Projektdefinition.

+0

Ich schaffte es, so weit mit dem "Paket" Befehl in SBT zu bekommen. Ich nehme nicht an, dass Sie scala-library.jar in der resultierenden jar-Datei einschließen können? –

+1

Platzieren Sie das JAR in src/main/resources und fügen Sie es dem Klassenpfad hinzu - >> override val manifestClassPath = Einige ("scala-library.jar") –

+0

Allerdings, auch wenn Sie scala-library.jar in Ihre App packen jar wird vom Klassenlader nicht geladen. Um das oben beschriebene Manifest-Update zu erstellen, müssen Sie scala-library.jar in den gleichen Ordner mit Ihrem jar stellen. –