compilation d'une application java FX
Bonjour ! et merci d'avance à tout ceux qui peuvent m'aider !
voilà ca doit faire plusieurs jours que je transpire et que je me bats sur ce sujet : j'ai fait ma petite appli de test sur e(fx)clipse, qui marche parfaitement, et j'essaie de créer un executable .exe pour windows.
j'utilise la version javafx-sdk-11.0.2
ma version de jdk est : jdk-14.0.2
pour compiler mon application je tente de générer mon build.xml en utilisant le fichier build.fxbuild intégré au départ à la création de mon projet javaFX sur e(fx)clipse.
j'obtiens le message d'erreur suivant lors de l'éxecution de mon fichier build.xml par Ant:
Citation:
Buildfile: C:\Users\regol\eclipse-workspace\bonjour\build\build.xml
setup-staging-area:
[delete] Deleting directory C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[delete] Deleting directory C:\Users\regol\eclipse-workspace\bonjour\build\project
[delete] Deleting directory C:\Users\regol\eclipse-workspace\bonjour\build\projectRefs
[mkdir] Created dir: C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\externalLibs
[mkdir] Created dir: C:\Users\regol\eclipse-workspace\bonjour\build\project
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\project
[mkdir] Created dir: C:\Users\regol\eclipse-workspace\bonjour\build\projectRefs
do-compile:
[delete] Deleting directory C:\Users\regol\eclipse-workspace\bonjour\build\build
[mkdir] Created dir: C:\Users\regol\eclipse-workspace\bonjour\build\build\src
[mkdir] Created dir: C:\Users\regol\eclipse-workspace\bonjour\build\build\libs
[mkdir] Created dir: C:\Users\regol\eclipse-workspace\bonjour\build\build\classes
[copy] Copying 8 files to C:\Users\regol\eclipse-workspace\bonjour\build\build\libs
[copy] Copying 1 file to C:\Users\regol\eclipse-workspace\bonjour\build\build\src
[javac] Compiling 1 source file to C:\Users\regol\eclipse-workspace\bonjour\build\build\classes
init-fx-tasks:
[taskdef] Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found.
do-deploy:
[copy] Copying 8 files to C:\Users\regol\eclipse-workspace\bonjour\build\dist\libs
BUILD FAILED
C:\Users\regol\eclipse-workspace\bonjour\build\build.xml:132: 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
quelque chose m'intrigue dans mon fichier xml, il y est fait mention de deux fichier .jar que je suis incapable de trouver sur mon PC : ant-javafx.jar, et jfxrt.jar
pour info mon fichier build.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
| <?xml version="1.0" encoding="UTF-8"?>
<project name="bonjour" default="do-deploy" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant">
<target name="init-fx-tasks">
<path id="fxant">
<filelist>
<file name="${java.home}\..\lib\ant-javafx.jar"/>
<file name="${java.home}\lib\jfxrt.jar"/>
</filelist>
</path>
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
uri="javafx:com.sun.javafx.tools.ant"
classpathref="fxant"/>
</target>
<target name="setup-staging-area">
<delete dir="externalLibs" />
<delete dir="project" />
<delete dir="projectRefs" />
<mkdir dir="externalLibs" />
<copy todir="externalLibs">
<fileset dir="C:\Program Files\Java\JFX\javafx-sdk-11.0.2\lib">
<filename name="javafx.graphics.jar"/>
</fileset>
</copy>
<copy todir="externalLibs">
<fileset dir="C:\Program Files\Java\JFX\javafx-sdk-11.0.2\lib">
<filename name="javafx-swt.jar"/>
</fileset>
</copy>
<copy todir="externalLibs">
<fileset dir="C:\Program Files\Java\JFX\javafx-sdk-11.0.2\lib">
<filename name="javafx.web.jar"/>
</fileset>
</copy>
<copy todir="externalLibs">
<fileset dir="C:\Program Files\Java\JFX\javafx-sdk-11.0.2\lib">
<filename name="javafx.fxml.jar"/>
</fileset>
</copy>
<copy todir="externalLibs">
<fileset dir="C:\Program Files\Java\JFX\javafx-sdk-11.0.2\lib">
<filename name="javafx.base.jar"/>
</fileset>
</copy>
<copy todir="externalLibs">
<fileset dir="C:\Program Files\Java\JFX\javafx-sdk-11.0.2\lib">
<filename name="javafx.swing.jar"/>
</fileset>
</copy>
<copy todir="externalLibs">
<fileset dir="C:\Program Files\Java\JFX\javafx-sdk-11.0.2\lib">
<filename name="javafx.media.jar"/>
</fileset>
</copy>
<copy todir="externalLibs">
<fileset dir="C:\Program Files\Java\JFX\javafx-sdk-11.0.2\lib">
<filename name="javafx.controls.jar"/>
</fileset>
</copy>
<mkdir dir="project" />
<copy todir="project">
<fileset dir="C:\Users\regol\eclipse-workspace\bonjour">
<include name="src/**" />
</fileset>
</copy>
<mkdir dir="projectRefs" />
</target>
<target name='do-compile'>
<delete dir="build" />
<mkdir dir="build/src" />
<mkdir dir="build/libs" />
<mkdir dir="build/classes" />
<!-- Copy project-libs references -->
<copy todir="build/libs">
<fileset dir="externalLibs">
<include name="javafx-swt.jar"/>
<include name="javafx.fxml.jar"/>
<include name="javafx.swing.jar"/>
<include name="javafx.graphics.jar"/>
<include name="javafx.base.jar"/>
<include name="javafx.web.jar"/>
<include name="javafx.media.jar"/>
<include name="javafx.controls.jar"/>
</fileset>
</copy>
<!-- Copy project references -->
<!-- Copy project sources itself -->
<copy todir="build/src">
<fileset dir="project/src">
<include name="**/*"/>
</fileset>
</copy>
<javac includeantruntime="false" source="14" target="14" srcdir="build/src" destdir="build/classes" encoding="Cp1252">
<classpath>
<fileset dir="build/libs">
<include name="*"/>
</fileset>
</classpath>
</javac>
<!-- Copy over none Java-Files -->
<copy todir="build/classes">
<fileset dir="project/src">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="do-deploy" depends="setup-staging-area, do-compile, init-fx-tasks">
<delete file="dist"/>
<delete file="deploy" />
<mkdir dir="dist" />
<mkdir dir="dist/libs" />
<copy todir="dist/libs">
<fileset dir="externalLibs">
<include name="*" />
</fileset>
</copy>
<fx:resources id="appRes">
<fx:fileset dir="dist" includes="bonjour.jar"/>
<fx:fileset dir="dist" includes="libs/*"/>
</fx:resources>
<fx:application id="fxApplication"
name="Main"
mainClass="application.Main"
toolkit="fx"
/>
<mkdir dir="build/classes/META-INF" />
<fx:jar destfile="dist/bonjour.jar">
<fx:application refid="fxApplication"/>
<fileset dir="build/classes">
</fileset>
<fx:resources refid="appRes"/>
<manifest>
<attribute name="Implementation-Vendor" value="politi"/>
<attribute name="Implementation-Title" value="Main"/>
<attribute name="Implementation-Version" value="1.0"/>
<attribute name="JavaFX-Feature-Proxy" value="None"/>
</manifest>
</fx:jar>
<!-- Need to use ${basedir} because somehow the ant task is calculating the directory differently -->
<fx:signjar
keystore="juju"
alias="juju"
keypass="juju"
storepass="juju"
destDir="${basedir}/dist">
<fileset dir='dist'>
<include name='**/*.jar' />
</fileset>
</fx:signjar>
<mkdir dir="deploy" />
<!-- Need to use ${basedir} because somehow the ant task is calculating the directory differently -->
<fx:deploy
embedJNLP="false"
extension="false"
width="400" height="400"
includeDT="false"
offlineAllowed="true"
outdir="${basedir}/deploy"
outfile="bonjour" nativeBundles="exe"
updatemode="background" >
<fx:platform basedir="${java.home}"/>
<fx:info title="bonjour" vendor="politi"/>
<fx:application refId="fxApplication"/>
<fx:resources refid="appRes"/>
<fx:permissions elevated="true"/>
</fx:deploy>
</target>
</project> |
voilà, maintenant je me demande si il ne serait pas mieux de passer par Maven pour construire mon projet Javafx ? quelle est la meilleur solution ? la plus largement utilisée ? passer par Ant et e(fx)clipse, ou construire un projet maven/javafx ?
un grand merci !