Wie erstelle ich eine AppleScript- oder Command-Datei, um eine Java-Anwendung unter Mac OS zu starten?

8

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:

%Vor%

Für Linux habe ich ein Shell-Skript wie dieses launch-linux.sh :

erstellt %Vor%

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:

%Vor%

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:

  1. MacOS wird von Sun / Oracle nicht offiziell unterstützt, deshalb ist es schwierig, eine gute Dokumentation zu finden. (Ich brauche die neueste JRE 7).
  2. Ich habe noch nie einen Mac benutzt oder habe keinen, um auszuprobieren, wie es funktionieren könnte.

Also meine Fragen sind jetzt:

  1. Wie man java von der Befehlszeile in MacOS laufen lässt, was ist die korrekte Syntax? Oder warum funktioniert der obige Befehl nicht? (Der Hauptunterschied zwischen Windows und Linux besteht beispielsweise in der Verwendung von Semikolon ; anstelle von Doppelpunkt : Trennzeichen für den Klassenpfad.)
  2. Wie sollte eine MacOS-Skriptdatei benannt werden? .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.

    
Rando 11.03.2012, 14:35
quelle

1 Antwort

10

Okay, nach einigen Stunden Forschung scheint es, dass es mehr als nur eine Antwort auf dieses Problem gibt.

Bash-Skripte

Mehrere Probleme

  • Ein Grund für die 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.
  • Ein weiterer Grund für 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 .)

Zusammenfassung

Windows: launch-linux.sh

%Vor%

Linux: launch-macos.command

%Vor%

Mac OS: %code%

%Vor%     
Rando 11.03.2012, 23:49
quelle