Outils pour utilisateurs

Outils du site


appbundler-jar-native-macos

Ceci est une ancienne révision du document !


Table des matières

Créer une application native macOS depuis un jar

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).

appbundler

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 le 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.

Il vous faudra Xcode afin de compiler JavaAppLauncher ou alors prenez directement mon fichier appbundler-1.0ea.jar.zip disponible ci-dessous.

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.

Utilisation

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.

Toujours dans ce répertoire, créez le fichier build.xml comme suit:

build.xml
<?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&#10;Merci à: &#10;Pierre Sarrazin &lt;http://sarrazip.com/dev/verbiste.html&gt;"
        >
            <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é.

On peut aussi mettre cela dans le build.xml de la racine d'un projet NetBeans comme expliqué à: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html.
C'est aussi le cas du projet fourni dans l'article Verbiste sous macOS
appbundler-jar-native-macos.1502142324.txt.gz · Dernière modification: 2017/08/07 23:56 (modification externe)