Ceci est une ancienne révision du document !
Cet article décrit comment encapsuler un .jar exécutable dans un bundle macOS (une application native macOS, donc un répertoire .app possédant une certaine structure).
Tout d'abord, il vous faut le programme appbundler disponible (par exemple) chez Bitbucket. C'est lui qui crée l'application native.
Voici la version disponible au moment de l'écriture de cet article: infinitekind-appbundler-6687ec9d200c.zip
Décompressez, vous obtenez alors un répertoire contenant un fichier build.xml
et un sous-répertoire appbundler
, lancez un Terminal
et placez-vous dans ce répertoire contenant build.xml
.
Il suffit alors de lancer ant
.
Chez moi, il est ici: /Applications/NetBeans/NetBeans 8.1.app/Contents/Resources/NetBeans/extide/ant/bin/ant
.
Xcode
afin de compiler JavaAppLauncher
Cela crée le programme appbundler-1.0ea.jar
dans le répertoire appbundler/bin
. Voici le mien appbundler-1.0ea.jar.zip, il est modifié afin de n'avoir que la version 64 bits de JavaAppLauncher
.
Voyons comment faire à l'aide d'un exemple, l'article de Verbiste contient verbiste-gui.jar.zip.
Placez verbiste-gui.jar, appbundler-1.0ea.jar et verbiste.icns.zip (décompressé) dans un même répertoire.
Créez le fichier build.xml
comme suit:
<?xml version="1.0" encoding="UTF-8"?> <project name="Verbiste" default="Verbiste" basedir="."> <!-- Import environment variables --> <property environment="env"/> <!-- Define the appbundler task --> <taskdef name="appbundler" classname="com.oracle.appbundler.AppBundlerTask" classpath="appbundler-1.0ea.jar" /> <!-- Create the app bundle --> <target name="Verbiste"> <appbundler outputdirectory="." name="Verbiste" displayname="Verbiste" identifier="granddub.verbiste.Verbiste" shortversion="1.0" mainclassname="verbiste.Verbiste" icon="verbiste.icns" copyright="© 2017 Grand Dub Merci à: Pierre Sarrazin <http://sarrazip.com/dev/verbiste.html>" > <classpath file="VerbisteUI.jar"/> <option value="-Dapple.laf.useScreenMenuBar=true"/> <!-- Pour avoir le même PATH dans l'appli que le shell courant (qui lui sait lancer french-conjugator) --> <environment name="PATH" value="${env.PATH}" /> <scheme value="mailto"/> </appbundler> </target> </project>
Lancez ant
, c'est terminé.