2017-08-24 3 views
-2

J'ai un certain nombre de fichiers jar, certaines ressources, base de données h2, etc. dans mon projet. Pour créer application Mac J'ai utilisé ornithorynque. Pour exécuter mon application script shell a été utilisé.Lors du lancement de l'application java en tant qu'application Mac, le nom du processus java par défaut et la description à la place du mien

Toutefois, à ce cas lorsque l'application commence alors processus java séparé démarre et il ni nom propre de l'application, ni appropriée Abou Description de t dans le menu Mac. Terminal démarre aussi ce n'est pas voulu.

Comment je devrais lancer l'application pour éviter ces inconvénients afin que le nom de l'application et la description étaient les bonnes?

Ce que je vois maintenant (nom et A propos):

enter image description here

enter image description here

Mon lancement script shell est le suivant:

#!/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 $* 

Comment je créé l'application par Platypus. Le processus est simple: je définis mon shell-script et ajoute toutes mes ressources. Aussi, je peux configurer l'icône. Et j'ajoute Credits.html pour permettre A propos de la description comme indiqué dans la documentation:

enter image description here

Répondre

1

Vous pouvez essayer d'exécuter les applications Java/processus en headless mode.
Essayez d'ajouter cette option à votre DEFAULT_JVM_OPTS:

-Djava.awt.headless=true 

Mais depuis votre application Java a une interface graphique, qui ne peut être une option viable.

Vous pouvez également essayer l'implémentation de vos propres gestionnaires pour le menu du système en utilisant les com.apple.eawt des classes d'Apple Extensions (ex AboutHandler, QuitHandler, etc..), Comme indiqué dans leur Java Development Guide for Mac docs:

L'étape suivante de la personnalisation votre menu d'application doit avoir votre propre code de manipulation appelé lorsque certains éléments du menu de l'application sont choisis. Apple fournit des fonctionnalités pour cela dans les classes Java com.apple.eawt.* . Les classes Application et ApplicationAdaptor fournissent un moyen de gérer les éléments Préférences, À propos et Quitter.

Je n'ai pas pu trouver les documents API réels.
Voici quelques autres liens SO qui peuvent aider:

+0

Oui.Avec cette option il y a une exception: Exception dans le fil "main" java.awt.HeadlessException ... Cependant, merci pour l'information, je verrai ces approches. –