Scala: Erstellen eines kleinen ausführbaren Jar, der auf externe Scala-Bibliotheken angewiesen ist

8

Ich versuche, eine kleine Anwendung (Scala!) auf eine "saubere Art" zu verpacken. Das Ziel ist eine ausführbare JAR-Datei. Ich habe Folgendes getan:

  • hat ein JAR mit sbt - & gt; wird mit
  • arbeiten
%Vor%

oder

%Vor%

funktioniert aber nicht mit

%Vor%

weil dann scala / ScalaObject nicht gefunden werden kann. Und keine Verwendung eines Klassenpfads für diesen letzten Pfad, da die Option -jar die Option -classpath ignoriert. Beachten Sie, dass ich die SCALA-Bibliotheken in der CLASSPATH-Variablen des Systems hinzugefügt habe, aber sie scheint auch ignoriert zu werden, wenn -jar verwendet wird.

  • hat den scala-Bibliotheksinhalt (indem er sie zuerst entpackt hat) zu dem von sbt erstellten jar hinzugefügt. Dies funktioniert dann (das Jar kann doppelt angeklickt und gestartet werden), aber die Manipulation ist etwas langwierig und die resultierende Datei ist mehrere Megabyte groß. Nicht ideal.

Nach stundenlangem Googlen kann ich keine Möglichkeit sehen, eine kleine JAR-Datei zu erstellen, die beim Doppelklicken gestartet wird und keine schmerzhafte Manipulation erfordert. Was vermisse ich? Ich vermute, es sollte eine Möglichkeit geben zu definieren, wo sich die Scala-Bibliotheken auf Systemebene befinden. Wie gehen Sie mit kleinen Anwendungen um, die kompiliert und betriebsbereit sein sollen?

Beachten Sie, dass ich während der Verwendung von sbt kein Jar-Tool zur Hand habe (ich verlasse mich auf eine JRE, nicht auf ein JDK).

Danke! Pierric.

    
Pierric 18.04.2011, 16:12
quelle

1 Antwort

3

Das folgende Setup funktioniert für mich:

  • habe scala-library.jar im selben Ordner wie das ausführbare jar (und java von dort aufrufen)
  • setze das in dein Manifest: %Code%

Eine weitere Möglichkeit besteht darin, den Inhalt von scala-library.jar in Ihre Anwendung jar zu integrieren. Der Nachteil ist, dass dies seine Größe erhöhen wird. Aber Sie können Proguard verwenden, um unbenutzte Klassen aus Ihrem endgültigen Jar zu entfernen. Ich denke, es gibt eine einfache Möglichkeit, mit sbt eine ausführbare Jar mit proguard zu packen.

Zum Schrumpfen mit Proguard können Sie sich diese Seite ansehen . Es geht um Android-Entwicklung; Ignorieren Sie einfach diesen Teil und werfen Sie einen Blick auf die Tabellen der schrumpfenden Ergebnisse. Einige Beispielanwendungen schrumpfen auf weniger als 100 KB.

Bearbeiten

Vielleicht müssen Sie Ihre Frage ein wenig verfeinern. Was versuchst du zu erreichen? Möchten Sie das Programm nur auf Ihrem System installieren oder möchten Sie es verteilen?

Wenn Sie nur eine Java-Anwendung schnell starten möchten, ohne die JVM-Startzeit zu beeinflussen, können Sie sich nailgun .

    
ziggystar 18.04.2011, 17:29
quelle

Tags und Links