So erstellen Sie ein AppleScript - oder Command-Datei zum starten einer Java-Applikation auf Mac OS?
Erstellte ich eine Java-Anwendung und vorbereiten müssen, und es laufen auf jedem OS. Für Windows erstellte ich eine batch-Datei wie folgt launch-win32.bat
:
@echo off
javaw -Xss1024k -Xmn256m -Xms512m -Xmx1024m -cp lib/*;bin/myjar-latest.jar my.package.MyMainClass
Für linux erstellt habe ich ein shell-Skript wie dieses launch-linux.sh
:
#!/bin/sh
java -Xss1024k -Xmn256m -Xms512m -Xmx1024m -cp lib/*:bin/myjar-latest.jar my.package.MyMainClass
Nun dachte ich MacOS ganz ähnlich wie linux, da beide auf unix basieren und ich bat einen Freund mit einem mac zu versuchen, führen Sie das shellscript zum starten meiner Anwendung. Aber es konnte nicht mit der folgenden NoClassDefFoundError
:
Exception in thread "main" java.lang.NoClassDefFoundError: my/package/MyMainClass
Caused by: java.lang.ClassNotFoundException: my.package.MyMainClass
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Wie es aussieht ist die syntax der java-Befehl ist nicht korrekt, da der classpath nicht korrekt Hinzugefügt, um das java-programm. Mein Hauptproblem ist jetzt die folgende:
- MacOS wird nicht offiziell unterstützt von Sun/Oracle, die ist, warum es ist schwer zu finden einige gute Dokumentation. (Ich brauche die neueste JRE 7).
- Ich nie benutzt, Mac oder don ' T haben, um zu versuchen, wie es funktionieren könnte.
Also meine Fragen sind jetzt:
- Wie die Ausführung von java von der Kommandozeile in MacOS, was ist die richtige syntax? Oder warum funktioniert der obige Befehl nicht funktionieren? (Zum Beispiel der wesentliche Unterschied zwischen Windows und Linux ist mit Semikolon
;
statt Doppelpunkt:
separator für die classpath.) - Wie soll eine MacOS-Skript-Datei benannt werden sollten?
.sh
oder.scpt
oder.command
oder ist es wie unter linux, dass die Datei-Endung spielt keine Rolle, solange Siechmod +x
die Skript-Datei?
Vielen Dank für alle Hinweise.
- +1 für gut beschrieben Frage.
- Macht die app. eine GUI haben?
- Ja, einer swing-Schnittstelle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, nach einigen Stunden der Forschung, es scheint, es gibt mehr als nur eine Antwort auf diese Frage(N).
Bash-Skripte
.command
bash-Skript-Dateien. Sie sehen sehr ähnlich zu linux-shell-Skripten. Machen Sie die ausführbaren shell-Skripts mitchmod +x
.Mehrere Probleme
NoClassDefFoundError
werden kann, dass die standardmäßig installierte Java-VM auf Mac OS niedriger ist als die benötigte JRE/JDK verwendet wurde, die das kompilieren der software. Nichts mehr was ich tun kann als nur zu sagen die Benutzer zum installieren des lateste JRE.NoClassDefFoundError
ist - und dies ist ziemlich schockierend - , die bash-Skripte in Mac OS nicht laufen, die im gleichen Verzeichnis wie die, denen Sie im aber aus dem home-Verzeichnis des Benutzers. Die Lösung ist das hinzufügen einer Zeile in der bash-Skript, um herauszufinden, das working directory:cd "$(dirname "$0")"
(Siehe auch.)Zusammenfassung
Windows:
launch-win32.bat
Linux:
launch-linux.sh
Mac OS:
launch-macos.command
-X
Flaggen haben nichts zu tun mit dem Thema? Sie sehen aus wie Sie sind die gleichen für jede Plattform, und von was ich sagen kann, Sie sind nicht unbedingt notwendig.