Ich habe eine Java-Anwendung erstellt und muss sie so vorbereiten, dass sie auf jedem Betriebssystem ausgeführt werden kann. Für Windows habe ich eine Batch-Datei wie dieses launch-win32.bat
erstellt:
Für Linux habe ich ein Shell-Skript wie dieses launch-linux.sh
:
Nun dachte ich, dass MacOS Linux sehr ähnlich sein wird, da beide Unix-basiert sind und ich fragte einen Freund mit einem Mac, um zu versuchen, das Shellscript auszuführen, um meine Anwendung zu starten. Aber es ist mit dem folgenden NoClassDefFoundError
fehlgeschlagen:
Es sieht so aus, als ob die Syntax des Befehls java nicht korrekt ist, da der Klassenpfad nicht korrekt zum Java-Programm hinzugefügt wurde. Mein Hauptproblem ist jetzt das folgende:
Also meine Fragen sind jetzt:
;
anstelle von Doppelpunkt :
Trennzeichen für den Klassenpfad.) .sh
oder .scpt
oder .command
oder ist es wie in Linux, dass die Dateiendung nicht so wichtig ist, wie Sie chmod +x
die Skriptdatei? Danke für Hinweise.
Okay, nach einigen Stunden Forschung scheint es, dass es mehr als nur eine Antwort auf dieses Problem gibt.
.command
bash-Skriptdateien zu sein. Sie sehen Linux-Shell-Skripten ziemlich ähnlich. Machen Sie sie ausführbar wie Shell-Skripte mit chmod +x
. NoClassDefFoundError
kann sein, dass die standardmäßig installierte Java VM unter Mac OS niedriger ist als die benötigte JRE / JDK, mit dem die Software kompiliert wurde. Nichts anderes kann ich dagegen tun, als dem Benutzer nur zu sagen, dass er die neueste JRE installieren soll. NoClassDefFoundError
ist - und das ist ziemlich schockierend - , dass bash-Skripte in Mac OS nicht aus dem selben Verzeichnis laufen wie in , sondern vom Benutzer Heimverzeichnis. Die Lösung besteht darin, dem Bash-Skript eine Zeile hinzuzufügen Finde das Arbeitsverzeichnis heraus: cd "$(dirname "launch-win32.bat
")"
( Siehe auch .) launch-linux.sh
launch-macos.command
Tags und Links java macos shell noclassdeffounderror applescript