Problème de build avec Eclipse Neon.1

Avec Eclipse Neon.1, JavaFX 8, e(fx)clipse, JDK 8 112

a marqué ce sujet comme résolu.

Bonjour, En espérant que quelqu'un puisse m'éclairer ici…

Je viens de réaliser un tutoriel (externe à ce site) sur la programmation en JavaFX 8. Et je bloque à la dernière étape du tutoriel, soit la confection d'un programme distribuable avec install.

Le lien vers le tutoriel en question est le suivant: http://code.makery.ch/library/javafx-8-tutorial/fr/.

Je suis sous Windows 10, avec Eclipse Neon.1, e(fx)clipse d'installé et le dernier Scene Builder. J'utilise le JDK 8 version 112. J'ai aussi installé Inno Setup 5.5.9 comme demandé dans le tutoriel.

J'ai réalisé tutoriel en construisant mon projet au fur et a mesure de la progression. Et le bug survient seulement à l'étape finale. J'ai aussi tenté de réaliser cette étape finale en utilisant le code source final du tutoriel disponible sur la page du dernier chapitre et ça produit exactement le même bug.

Le bug se produit à l'étape 6 du chapitre 7: Éxécuter build.xml Voici le message d'erreur que j'obtiens:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
init-fx-tasks:
  [taskdef] Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found.
do-deploy:

BUILD FAILED
###\Google Drive\Java\Neon\AddressApp\build\build.xml:85: Problem: failed to create task or type javafx:com.sun.javafx.tools.ant:resources
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
No types or tasks have been defined in this namespace yet

À la ligne 85 de mon fichier build.xml mentionné dans le message d'erreur, on retrouve le bloc de code suivant: (La ligne 85 est la première du bloc de code cité ci-dessous)

1
2
3
4
5
<fx:resources id="appRes">
    <fx:fileset dir="dist" includes="AddressApp.jar"/>
    <fx:fileset dir="dist" includes="libs/*"/>
    <fx:fileset dir="dist" includes="resources/**"/>
</fx:resources>

Un élément que j'ai remarqué de particulier: dans le fichier build.xml, il a cette ligne qui a été générée automatiquement:

1
<file name="${java.home}\lib\jfxrt.jar"/>

Or, je constate que dans le JRE du JDK, dans mon dossier lib, il n'y a aucun fichier nommé jfxrt.jar …

Voilà, en espérant que mes indications soient assez claires et suffisantes pour que quelqu'un puisse me fournir une solution ou a tout le moins une piste à suivre…

Merci et à bientôt! Oli

P.S. Je suis tout nouveau dans votre communauté, merci de m'accueillir. Je m'appelle Olivier, j'ai 36 ans et je m'intéresse à la programmation Java depuis un certain temps. Je suis québécois, et j'habite un petit village de campagne près de la petite ville de Shawinigan, en plein centre de la province. A+!

Ton problème vient du fait que ant ne retrouve pas ton fichier jfxrt.jar. Il devrait se trouver dans le dossier du jdk. Je ne suis pas sur windows donc je n'ai pas le chemin exact, mais si tu fais une recherche dans ton dossier Jdk tu dois le teouver.

Si le fichier n'existe pas, vérifie que tu as bien installé le jdk d'oracle et pas juste la jre.

Oui, tu as raison pour le jfxrt.jar, j'ai modifier dans le build.xml pour mettre le nom de chemin complet, et ce premier bug à été résolu.

Maintenant, j'ai un autre bug qui se produit un peu plus loin et qui je pense a un rapport avec Inno Setup, mais je n'arrive pas a trouver de solutions sur google.

Voici le message d'erreur:

1
2
3
4
Exception: java.io.IOException: Exec failed with code -1073741790 command [[###\AppData\Local\Temp\iconswap3966161699681865453.exe, ###\AppData\Local\Temp\fxbundler7783791512359039697\windows\AddressApp.ico, ###\AppData\Local\Temp\fxbundler7783791512359039697\images\win-exe.image\AddressApp\AddressApp.exe] in unspecified directory

BUILD FAILED
###\Google Drive\Java\Neon\AddressApp\build\build.xml:125: Error: Bundler "EXE Installer" (exe) failed to produce a bundle.

Et à la ligne 125 en question on retrouve le code suivant dans le fichier build.xml(la ligne 125 selon mon editeur d'eclipse c'est l'attribut "updatemode", mais je soupconne que ce soit en réalité à l'attribut "outfile" qu'il plante:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<fx:deploy
            embedJNLP="false"
            extension="false"
            includeDT="false"
            offlineAllowed="true"
            outdir="${basedir}/deploy"
            outfile="AddressApp" nativeBundles="exe"
            updatemode="background" >

            <fx:platform basedir="${java.home}"/>
            <fx:info title="AddressApp" vendor="makery.ch"/>

            <fx:application refId="fxApplication"/>
            <fx:resources refid="appRes"/>
        </fx:deploy>

J'ai bien mis le chemin correct de Inno setup dans la variable d'environnement windows "path".

Je suis un peu démuni en ce moment comme piste de solution à explorer…

A+ Oli

+0 -0

Sur mon installation locale, le fichier jfxrt.jar est situé dans le dossier ${java.home}\lib\ext\jfxrt.jar et non dans le dossier ${java.home}\lib\jfxrt.jar.

Je serais toi, je tenterais de modifier la ligne de ton fichier build.xml de <file name="${java.home}\lib\jfxrt.jar"/> à <file name="${java.home}\lib\ext\jfxrt.jar"/>.

D'une manière générale, les professionnels ont tendance à utiliser un autre outil de build, Gradle qui est plus récent et devint un standard dans l'industrie. Maven est l'outil de build le plus utilisé aujourd'hui car il était avant considéré comme l'outil de build de référence. Il perd en importance ces dernières années.

Ant est l'outil utilisé avant Maven et pour être honnête avec toi, plus grand monde l'utilise.

Edit: alors IOException, c'est qu'il arrive pas accéder à un fichier. Peut tu vérifier que tu as bien tout fait dans l'étape 2 du tutoriel (Ajouter des icônes pour le fichier d'install) ?.

Peux-tu vérifier le nom et l'emplacement du fichier AddressApp.ico et as-tu bien le bon nom soit "AddressApp" dans cette interface:

Image utilisateur

+1 -0

Ça me ferait penser à une histoire de droit, comme ça. Je vois que ton projet est dans le dossier Google Drive peut-être que ce dossier a des droits spécifiques qui empêchent le programme iconswap.exe de fonctionner. Essaye de mettre ton projet à un autre endroit, peut-être que ça fonctionnera mieux (copie le comme ça au pire tu aura toujours la bonne copie).

Sinon ce que tu peux faire c'est supprimer les lignes qui concerne la gestion de l'icone de l'application pour l'instant et voir, si ça résout pas le souci.

Sinon créé une archive et met le à télécharger qu'on puisse tester.

+1 -0

Bon, je viens de faire le test avec le dossier de mon projet copié sur le disque local, dans mon dossier personnel, et ça me donne la même erreur.

Je vous ai fait une archive téléchargeable pour que vous puissiez tester. Je n'ai pas trouvé de possibilité pour la télécharger sur le site, alors je vous l'ai partagée via mon GDrive. Voici le lien: AddressApp.zip (Il faut utiliser le bouton de téléchargement en haut à droite. Celui avec la flèche qui pointe vers le bas…).

Puisque tu dis Hugo qu'Ant c'est dépassé et que je devrais plutot me tourner vers Gradle ou a tout le moins Maven. Ne vous fendez pas trop le c* pour faire fonctionner mon truc. C'est simplement que ça fesait partie de mon tutoriel et que je trouvais intéressant de m'initier au bundle d'application Java pour Windows…

Néanmoins, merci de vos lumières!

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte