2017-08-24 1 views
-2

Ich habe eine Reihe von JAR-Dateien, einige Ressourcen, H2-Datenbank, etc. in meinem Projekt. Um Mac-Anwendung zu erstellen, habe ich Platypus verwendet. Zum Ausführen meiner Anwendung wurde Shell-Skript verwendet.Beim Starten von Java-App als Mac-App gibt es standardmäßig Java-Prozess Name und Über Beschreibung statt meiner

in diesem Fall jedoch, wenn die Anwendung startet dann separaten Java-Prozess startet und dort weder richtige Namen des App und auch keine Abou t Beschreibung in Mac-Menü. Auch Terminal startet, das ist nicht gewollt.

Wie sollte ich die App starten, um diese Nachteile zu vermeiden, so dass der Name der App und Über die Beschreibung die richtigen waren?

Was ich jetzt sehen (Name und Über):

enter image description here

enter image description here

Mein Start Shell-Skript ist die folgende:

#!/bin/bash 

export IRULE_HOME="$(cd "$(dirname "$0")" && pwd -P)" 

export IRULE_LANG=en 
export IRULE_REGION=EN 
export IRULE_XMS=-Xms256m 
export IRULE_XMX=-Xmx1024m 
export LOG4J_CONFIGURATION=${IRULE_HOME}/conf/log4j2.xml 
export JAVA_HOME="${IRULE_HOME}/jre/Contents/Home" 

export DEFAULT_JVM_OPTS="$IRULE_XMS \ 
       $IRULE_XMX \ 
       -Dlog4j.configuration=file:"${LOG4J_CONFIGURATION}" \ 
       -Dirule.home=${IRULE_HOME} \ 
       -Dirule.client.logs.path=${IRULE_HOME}/logs \ 
       -Duser.language="${IRULE_LANG}" \ 
       -Duser.region="${IRULE_REGION}" \ 
       $JAVA_OPTS" 


export PATH=${JAVA_HOME}/bin:${JAVA_HOME}:${PATH} 
export CLASSPATH=${IRULE_HOME}/lib/*:${IRULE_HOME}/conf:${JAVA_HOME}/lib/jfxrt.jar; 

exec ${JAVA_HOME}/bin/java -Xdock:name="iRule Reader" -Xdock:icon=${IRULE_HOME}/image/irule.png ${DEFAULT_JVM_OPTS} -classpath "${CLASSPATH}" com.spi2.Main $* 

Wie kann ich die App erstellt von Platypus. Der Prozess ist einfach: Ich setze mein Shell-Skript und füge alle meine Ressourcen hinzu. Außerdem kann ich das Symbol einrichten. Und ich füge hinzu credits.html Über Beschreibung zu ermöglichen, wie in der Dokumentation sagte:

enter image description here

Antwort

1

Sie könnten versuchen, die Java-Anwendungen/Prozessen in headless mode ausgeführt wird.
Versuchen das Hinzufügen dieser Option zu Ihrem DEFAULT_JVM_OPTS:

-Djava.awt.headless=true 

Aber da Ihre Java-Anwendung eine GUI hat, das kann nicht ein gangbarer Weg sein.

Sie auch mit den com.apple.eawt Apple-Extensions Klassen könnten versuchen, Ihren eigenen Handler für das Systemmenü der Umsetzung (ex AboutHandler, QuitHandler etc..), Angegeben als in ihrem Java Development Guide for Mac docs:

Der nächste Schritt zum Anpassen Ihr Anwendungsmenü soll Ihren eigenen Handhabungscode haben, der aufgerufen wird, wenn bestimmte Punkte im Anwendungsmenü ausgewählt sind. Apple bietet hierfür in den Java-Klassen Funktionalität an. Die Klassen Application und ApplicationAdaptor stellen eine Möglichkeit bereit, mit der die Elemente "Preferences", "About" und "Quit" behandelt werden können.

Ich konnte die tatsächlichen API-Dokumente jedoch nicht finden.
Hier sind einige andere SO Links, die helfen können:

+0

Ja.Bei dieser Option gibt es eine Ausnahme: Ausnahme im Thread "main" java.awt.HeadlessException ... Aber danke für die Informationen, ich sehe diese Ansätze. –

Verwandte Themen