编译JavaFX代码使用ANT(Compile JavaFX Code using ANT)

2019-07-04 15:41发布

我有以下安装在我的系统 -

 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;

Answer 1:

更新对Java 8

在Oracle的Java 8, jfxrt.jar是默认的类路径上,所以你并不需要在这个答案描述明确其添加到类路径。 添加jfxrt.jar到classpath中只需要对Java 7。


编译问题是因为jfxrt.jarjre\lib的类路径中没有设置。

该错误的taskdef是因为指定的路径造成的ant-javafx.jar值不指向你的文件系统有效的文件。

我想围绕使用也可能存在问题:而不是一个; 在路径分隔条件和使用/ ,而不是\指定路径,但蚂蚁似乎相当宽容有关的那些事情,所以他们可能不会在所有问题。

我创建了一个示例项目基础上构建脚本的非常轻微的修改版本,它为我工作(没有了taskdef警告,并没有编译错误)。 它建立了jdku9窗口64位。 如果您使用的是不同版本的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

需要注意的是样品中的构建脚本是很基本的,其实只是提供作为首发脚本,让你去。 你是最好的关闭也加入Ant任务来进一步部署任务 (如fx:deploy ),以确保正确打包的应用程序,它支持像一个点击运行罐子功能。 如果不是这样,或者使用NetBeans,让它产生合适的蚂蚁构建文件为您服务。

修改后的蚂蚁脚本我用来建立(与蚂蚁1.8.4 )我链接的示例应用程序是:

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


文章来源: Compile JavaFX Code using ANT