2012-12-06 10 views
5

Mam w następstwie zainstalowane na moim systemie -kompilacji kodu JavaFX korzystając ANT

Java version "1.7.0_09" 
JavaFX 2.0 SDK 
NetBeans 7.2.1 

Kiedy próbuję skompilować kod za pomocą ANT to pokazuje mi komunikat o błędzie -

Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found. 

build.xml zawiera

<project name="XYZ" default="XYZ" basedir="XYZ" xmlns:fx="javafx:com.sun.javafx.tools.ant"> 
    <description> 
     simple example build file 
    </description> 

    <!-- set global properties for this build --> 
    <property name="srcXYZGenerator" location="src/XYZGenerator"/> 


    <property name="classpath" location="lib/XYZLib.jar;lib/ABC.jar;lib/IJK.jar;"/> 


    <target name="init"> 
     <!-- Create the time stamp --> 
     <tstamp/> 
     <!-- Create the build directory structure used by compile --> 
     <mkdir dir="${buildXYZ}"/> 

    </target> 

    <target name="XYZ" depends="init"> 
    <!-- Compile the java code from ${src} into ${build} --> 
    <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"  
    uri="javafx:com.sun.javafx.tools.ant" classpath=".:C:\Program Files\Java\jdk1.7.0_09\lib\ant-javafx.jar"/> 
    <javac classpath="${classpath}" srcdir="${srcXYZ}" destdir="${buildXYZ}"/> 
    </target> 


</project> 

Inne Błędy kompilacji:

[javac] C:\Users\JavaUser4\Desktop\XYX2012.12FX\XYZ\src\Utility\net\XYZ\javafx\queue\DefaultStatisticsHandlerController.java:19: error: package javafx.scene does not exist 
[javac] import javafx.scene.Node; 
[javac]     ^
[javac] C:\Users\JavaUser4\Desktop\XYZ2012.12FX\XYZ\src\Utility\net\XYZ\javafx\queue\DefaultStatisticsHandlerController.java:20: error: package javafx.scene.control does not exist 
[javac] import javafx.scene.control.Button; 
[javac]       ^
[javac] C:\Users\JavaUser4\Desktop\XYZ2012.12FX\XYZ\src\Utility\net\XYZ\javafx\queue\DefaultStatisticsHandlerController.java:21: error: package javafx.scene.control does not exist 
[javac] import javafx.scene.control.Label; 
[javac]       ^
[javac] C:\Users\JavaUser4\Desktop\XYZ2012.12FX\XYZ\src\Utility\net\XYZ\javafx\queue\DefaultStatisticsHandlerController.java:22: error: package javafx.scene.input does not exist 
[javac] import javafx.scene.input.MouseEvent; 
+0

classpath = ".: C: pliki \ Program \ .." powinno tam być.? –

+0

@AkselWillgert Przepraszamy! Nie rozumiem twojego punktu widzenia? Tak ... Podana ścieżka jest poprawna. Co.: Oznacza? –

+0

w twoim buildscriptu masz kilka postaci, których nie potrafię rozpoznawać. Sugerowałem, abyś usunął.: I zobacz, co się stanie –

Odpowiedz

6

Aktualizacja Javy 8

W Oracle Java 8, jfxrt.jar jest na ścieżce klasy domyślnie, więc nie trzeba jawnie dodać go do ścieżki klasy, jak to opisano w tej odpowiedzi. Dodawanie jfxrt.jar do ścieżki klasy jest konieczne tylko dla Java 7.


Problem kompilacja dlatego jfxrt.jar z jre\lib nie został ustawiony w ścieżce klasy.

Błąd taskdef został spowodowany, ponieważ ścieżka podana w wartości ant-javafx.jar nie wskazuje prawidłowego pliku w systemie plików.

Myślałem, że może być również kwestie związane z zastosowaniem : zamiast ; w ścieżkach rozdzielając iw użyciu / zamiast \ do określenia ścieżki, ale mrówka wydaje się dość wyrozumiały o tych rzeczach, więc prawdopodobnie nie mają żadnego znaczenia wszystko.

Utworzono sample project w oparciu o bardzo nieznacznie zmodyfikowaną wersję skryptu kompilacji, która zadziałała dla mnie (bez ostrzeżenia dotyczącego zadań i błędów kompilacji). Jest on skonfigurowany dla 64-bitowych okien jdku9. Jeśli używasz innej wersji jdk, musisz odpowiednio dostosować ścieżki w skrypcie. Sprawdzić, który ugryzł wersję JDK został zainstalowany - jeśli jest to 64 bit następnie użyć C:\Program Files\Java\..., jeśli jest 32-bitowy, a następnie użyć C:\Program Files (x86)\Java\...

Powstały aplikacji dla przykładowego projektu jest wykonywalny używając:

java -classpath "c:\Program Files (x86)\Java\jdk1.7.0_09\jre\lib\jfxrt.jar;XYZ\lib\ScenicView.jar;XYZ\build\XYZ" FriendFinder 

Należy zauważyć, że skrypt budowy w tym przykładzie jest bardzo prosty i jest dostarczany jako skrypt startowy. Najlepiej jest również adding ant tasks for further deployment tasks (jak fx:deploy), aby zapewnić odpowiednio opakowaną aplikację, która obsługuje takie funkcje, jak jar typu "kliknij, aby uruchomić". Albo to, albo użyj NetBeans i pozwól mu wygenerować dla ciebie odpowiednie pliki budujące mrówki.

Zmodyfikowany ant skrypt użyłem do budowy (z ant 1.8.4) zastosowanie związane jest próbka I:

<project name="XYZ" default="XYZ" basedir="XYZ" xmlns:fx="javafx:com.sun.javafx.tools.ant">  
    <property name="srcXYZ" location="src/XYZ"/> 
    <property name="buildXYZ" location="build/XYZ"/>  
    <property name="classpath" location="C:\Program Files (x86)\Java\jdk1.7.0_09\jre\lib\jfxrt.jar;lib\ScenicView.jar"/> 

    <target name="init"> 
     <tstamp/> 
     <mkdir dir="${buildXYZ}"/> 
    </target> 

    <target name="XYZ" depends="init"> 
     <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"  
    uri="javafx:com.sun.javafx.tools.ant" classpath=".:C:\Program Files (x86)\Java\jdk1.7.0_09\lib\ant-javafx.jar"/>  
     <javac includeantruntime="false" classpath="${classpath}" srcdir="${srcXYZ}" destdir="${buildXYZ}"/> 
    </target> 
</project> 
+0

Dziękuję bardzo. :) –

+0

Mam ten sam problem, z wyjątkiem java 8. Co by wtedy zrobiono? – TheCoffeeCup

+0

@ TheCoffeeCup Nie mam dla ciebie sugestii. Jak stwierdziłem w mojej odpowiedzi, nie spodziewałbym się, że problem ten wystąpi w Oracle Java 8, ponieważ plik jfxrt.jar znajduje się na ścieżce klasy Oracle Java 8. – jewelsea

Powiązane problemy