Mit Platypus kann keine funktionierende ausführbare .app-Datei erstellt werden

Ich bin neu bei OS X und versuche, einen Anwendungswrapper für ein Shell-Skript zu erstellen, das einen Medienserver startet (Red5).

Ich versuche, das Red5-Server-Starterskript ( ) mit Platypusred5.sh in eine .appausführbare Datei zu packen .

Das sagt die Platypus-Dokumentation

Sie können eine Liste mit Dateien hinzufügen, die in den Ressourcenordner Ihres Anwendungspakets kopiert werden sollen. Diese Dateien können dann von Ihrem Skript verwendet werden. Das standardmäßige aktuelle Arbeitsverzeichnis Ihres Skripts ist dieser Ordner, daher sollten Sie in der Lage sein, direkt von der CWD Ihres Skripts darauf zuzugreifen.

Bei normaler Ausführung vom Terminal aus (verwendet ./red5.sh) startet der Server einwandfrei, aber wenn ich die .appDatei erstelle (nachdem ich die CWD des Skripts im Feld „Zu bündelnde Dateien“ von Platypus eingestellt habe, .appwird die resultierende Datei nicht ausgeführt, wenn sie doppelt ausgeführt wird angeklickt.

Es gibt den folgenden Fehler

Error: Could not find or load main class

Ich bin mir nicht sicher, was ich falsch mache, aber ich denke, es hat etwas mit dem Bündeln des richtigen Verzeichnisses zu tun.

Antworten (1)

Ich hatte ein ähnliches Problem beim Versuch, einen Java-basierten Webanwendungsserver auszuführen. Für mich stellte sich heraus, dass das Problem darin bestand, dass meine Umgebungsvariablen (insbesondere JAVA_HOME) nicht gesetzt wurden, was daran liegt, dass die Instanz von Bash (oder welche Shell Sie auch verwenden) nicht als Login-Shell ODER an startet interaktive Shell, sodass Ihr Profilskript (z. B. ~/.profile, ~/.bashrcusw.) nicht automatisch ausgeführt wird.

Für mich bestand die Lösung darin, meinem Skript Folgendes hinzuzufügen:

source ~/.profile

Der sourceBefehl bewirkt, dass die Befehle in ~/.profilein der aktuellen Shell ausgeführt werden; Auf diese Weise stehen die von diesem Skript gesetzten Umgebungsvariablen der Bash-Instanz zur Verfügung, die platypus startet.

Beachten Sie, dass es wichtig ist, dass Sie die Profildatei nicht einfach als Shell-Skript selbst ausführen; Dadurch wird es in seiner eigenen Shell ausgeführt, die unmittelbar danach beendet wird. Alle Variablen, die es setzt, werden aufhören zu existieren, sobald es beendet wird. Aus diesem Grund müssen wir den Quellbefehl verwenden.

Alternativ können Sie die notwendigen Umgebungsvariablen auch direkt in Ihrem Skript setzen.

Hoffe das hilft!