首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ANT编译JavaFX代码

使用ANT编译JavaFX代码
EN

Stack Overflow用户
提问于 2012-12-06 18:58:40
回答 1查看 14.4K关注 0票数 7

我在我的系统上安装了以下软件-

代码语言:javascript
复制
 Java version "1.7.0_09"
 JavaFX 2.0 SDK 
 NetBeans 7.2.1

当我尝试使用ANT编译代码时,它显示了错误消息-

代码语言:javascript
复制
Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found. 

Build.XML包含

代码语言:javascript
复制
<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>  

其他编译错误:

代码语言:javascript
复制
[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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-07 03:44:32

Java 8更新

在OracleJava8中,默认情况下,jfxrt.jar位于类路径中,因此您不需要像本答案中描述的那样显式地将其添加到类路径中。只有Java7需要将jfxrt.jar添加到类路径中。

编译问题是因为类路径中没有设置来自jre\libjfxrt.jar

导致ant-javafx.jar错误的原因是指定给taskdef值的路径未指向文件系统上的有效文件。

我认为在分隔路径时使用:而不是;,以及使用/而不是\来指定路径也可能会出现问题,但ant似乎对这些事情相当宽容,所以它们可能根本不重要。

我基于您的构建脚本的一个非常轻微的修改版本创建了一个sample project,该版本对我有效(没有任务定义警告和编译错误)。它是为64位jdku9 windows设置的。如果您使用的是不同版本的jdk,则需要相应地调整脚本中的路径。检查您安装的jdk的位版本-如果是64位,则使用C:\Program Files\Java\...,如果是32位,则使用C:\Program Files (x86)\Java\...

示例项目的结果应用程序可以使用以下命令执行:

代码语言:javascript
复制
java -classpath "c:\Program Files (x86)\Java\jdk1.7.0_09\jre\lib\jfxrt.jar;XYZ\lib\ScenicView.jar;XYZ\build\XYZ" FriendFinder

请注意,示例中的构建脚本非常基础,实际上只是作为一个入门脚本提供给您。您最好还是使用adding ant tasks for further deployment tasks (如fx:deploy),以确保正确打包的应用程序支持诸如即点即用jar之类的特性。或者使用NetBeans并让它为您生成适当的ant构建文件。

我用来构建(使用ant 1.8.4)我链接的示例应用程序的修改后的ant脚本是:

代码语言:javascript
复制
<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>  
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13742149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档