7

システムに以下をインストールしました-

 Java version "1.7.0_09"
 JavaFX 2.0 SDK 
 NetBeans 7.2.1

ANT を使用してコードをコンパイルしようとすると、エラー メッセージが表示されます -

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

Build.XML が含まれています

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

その他のコンパイル エラー:

[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;
4

1 に答える 1

8

Java 8 の更新

Oracle Java 8 では、jfxrt.jarデフォルトでクラスパス上にあるため、この回答で説明されているようにクラスパスに明示的に追加する必要はありません。クラスパスへの追加jfxrt.jarは、Java 7 でのみ必要です。


コンパイルの問題は、クラスパスにjfxrt.jarfromが設定されていなかったためです。jre\lib

ant-javafx.jarvalue に指定されたパスがファイルシステム上の有効なファイルを指していないため、taskdef エラーが発生しました。

パスを分離する際に a:ではなく aを使用したり、パスを指定するのではなく使用する際にも問題があるのではないかと思いましたが、ant はそれらのことについてかなり寛容に見えるので、まったく問題にならないでしょう。;/\

ビルド スクリプトをわずかに変更したバージョンに基づいて、サンプル プロジェクトを作成しました。jdku9 Windows 64bit用にセットアップされています。別のバージョンの jdk を使用している場合は、スクリプト内のパスを適切に調整する必要があります。インストールした jdk のビット バージョンを確認します。64 ビットの場合は を使用しC:\Program Files\Java\...、32 ビットの場合は を使用します。C:\Program Files (x86)\Java\...

サンプル プロジェクトの結果のアプリケーションは、次を使用して実行可能です。

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

サンプルのビルド スクリプトは非常に基本的なものであり、作業を開始するためのスターター スクリプトとして提供されているだけであることに注意してください。クリックして実行する jar などの機能をサポートする適切にパッケージ化されたアプリケーションを確保するために、さらなる展開タスク( など) の ant タスクも追加することをお勧めします。fx:deployそれか、NetBeans を使用して、適切な ant ビルド ファイルを生成させます。

リンクしたサンプル アプリケーションを( ant 1.8.4で)ビルドするために使用した修正済みの ant スクリプトは次のとおりです。

<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>  
于 2012-12-06T19:44:32.287 に答える