Thema: Linux – Java – Windows – .jar
Normalerweise wird ein Java-Programm das zu einem .jar Archiv geschnürt ist folgender maßen ausgeführt: java -jar dateiname.jar
Manchmal möchte man ein .jar Paket direkt ausführbar machen. Damit spart man sich ein shell Startskript das zB so aussehen könnte:
#!/bin/bash
"$JAVA_HOME"/bin/java -jar /pfad/zum/paket/programm.jar
Befindet sich das Startskript im gleichen Verzeichnis wie das programm.jar spart man sich den Pfad und ersetzt diesen gegen ./
Oft sieht man java-Programme die man als solche gar nicht mehr erkennt oder mit der Endung .run
Solche Konstrukte stellt man wie folgt her:
Man nehme folgende Shellscript und speichert es als stub.sh
#!/bin/sh
MYSELF=`which "0" 2>/dev/null`
[? -gt 0 -a -f "0" ] && MYSELF="./0"
java=java
if test -n "JAVA_HOME"; then
java="JAVA_HOME/bin/java"
fi
exec "java"java_args -jar MYSELF "@"
exit 1
Anschließend kopiert man es in das gleiche Verzeichnis wie die .jar Datei, mache sie mit chmod +x deine.jar ausführbar und führe folgendes aus:
cat stub.sh deine.jar > dein_programm.run
Nun hast Du eine Datei namens dein_programm.run, dieses kannst Du wiederum mit chmod -x dein_programm.run ausführbar machen.
Jetzt wurde das Shellskript sowie die Java .jar zu einer Datei zusammengefügt und lässt sich problemlos starten. Es wird als Shellskript erkannt und lässt sich auch mit Doppelklick starten.
Für Windows gibt es dafür auch einen angeblich gut funktionierenden Wrapper Launch4j den ich allerdings nie selbst ausprobiert habe.
Viel Erfolg!