Non, j'ai fini par trouver que le JDK 1.70_04 était encore référencé malgré une désinstallation complète.
Au final, c’était un mix d'entre le fait que j'avais édité C:\Program Files (x86)\NetBeans 7.2\etc\netbeans.conf sans passer en admin et donc que
<mon compte>\appdata\local\virtual store\Program Files (x86)\NetBeans 7.2\etc\netbeans.conf referencait le JDK 1.70_06 tandis que C:\Program Files (x86)\NetBeans 7.2\etc\netbeans.conf referencait le JDK 1.70_04... et donc NetBeans utilisait alternativement soit l'un soit l’autre des JDK.
Stupide stupide Windows...
Donc après lecture du
post blog et du
guide de références et quelques tests (JDK 1.7.0_06 b21 + JFX 2.2 b19 qui est inclus dedans), j'ai pu rajouter une tache en fin de mon build.xml :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <target name="-post-jfx-deploy">
<fx:deploy width="${javafx.run.width}" height="${javafx.run.height}"
nativeBundles="all"
embedJNLP="true"
outdir="${basedir}/${dist.dir}" outfile="${application.title}">
<fx:application id="mainApplication" name="${application.title}" mainClass="${javafx.main.class}"/>
<fx:info title="${application.title}" description="${application.desc}" vendor="${application.vendor}">
<fx:icon href="${basedir}/Hei_Matau.ico" kind="default" width="64" height="64" depth="32"/>
</fx:info>
<fx:platform id="mainPlatform" javafx="2.2" j2se="7.0">
<fx:jvmarg value="-server"/>
<fx:jvmarg value="-XX:+UseG1GC"/>
</fx:platform>
<fx:resources>
<fx:fileset dir="${basedir}/${dist.dir}" includes="MFCL-viewer-j.jar"/>
<fx:fileset dir="${basedir}/${dist.dir}/lib" includes="*.jar"/>
</fx:resources>
</fx:deploy>
</target> |
Ce qui produit le répertoire dist/bundle avec :
- Répertoire bundle
- le fichier MSI (nécessite Wix sur le PATH sinon ce n'est pas généré). Dans mon cas 47Mo.
- le setup wizard (nécessite Inno Setup sur le PATH sinon ce n'est pas généré). Dans mon cas 31Mo.
- Répertoire <nom de l'application>
- Un launcher natif Windows. Dans mon cas 97Ko.
- son icône (actuellement l’icône par défaut 4Ko).
- Répertoire app
- le fichier de config du launcher package.cfg
1 2 3 4 5
| mainjar=OFP-fx2.jar
version=null
app.id=mainApplication
jvmarg.1=-server
jvmarg.2=-XX:+UseG1GC |
- Une copie de tous les JARs du projet (main jar + dépendances). Dans mon cas 1Mo.
- Répertoire runtime
- une copie complète du JRE + runtimes FX. Actuellement 139Mo sur Windows.
Tout n'est pas parfait cependant :
- Je déconseille de mettre tout de suite Wix et Inno setup dans le PATH (ou alors commenter la tache -post-jfx-deploy dans build.xml) car on passe alors de quelques secondes pour la compilation d'un (petit) projet (compilation + génération et compression des JAR + regroupement pour le bundle natif) a plus d'une minute (génération du MSI et du setup wizard et j'ai même pas encore rajouté la signature numérique). Ça devient donc assez lourdingue a chaque fois qu'on veut tester son app.
- Même si ma tache référence correctement des propriétés du projet NetBeans (${application.desc}, ${application.vendor}), elles semblent pour le moment être ignorées (voir le fichier package.cfg produit).
- Les arguments de la VM eux sont correctement inclus dans package.cfg.
- Le JNLP est généré correctement mais le launcher natif ne reçoit pas une bonne configuration : genre il a décrété que c'est un des JAR des dépendances qui devient le main jar de l'application et il insiste pour démarrer une classe qui est en fait un test dans cette même dépendance. Coté JNLP tout est décrit correctement par contre.
- Idem l’icône définie pour l'app ne vient pas remplacer celle fournie par défaut par le native bundler. Idem ici aussi tout est correct dans le JNLP.
- Dans les options de packaging du projet dans NetBeans j'ai demandé a ce que les JAR soient compressés (PACK200) mais c'est pas encore le cas apparemment.
- Idem contrairement a NetBeans 7.1 pour le moment je n'arrive plus avec cette config a pré-compiler les CSS de FX en binaire.
Faudra que je vois comment ca marche sous Linux et, pour le moment, je n'ai pas de MacOS sous la main pour voir comment ça marche (a noter qu'Oracle a poste
ça concernant Mountain Lion qui se voit désormais dote d'une fonction GateKeeper qui semble marche de manière un peu similaire a l'UAC dans Windows).
Bref, c'est pas encore ça
, et ça fait un peu gros pour une app qui fait a la base 1Mo. Dommage que la modularisation soit encore repoussée a Java 9.
En attendant, j'ai soumis le bug RT-23778 sur le Jira de JavaFX.
1 |
0 |