使用ANT编译JavaFX代码
我的系统上安装了以下内容-使用ANT编译JavaFX代码,java,ant,build,compilation,javafx-2,Java,Ant,Build,Compilation,Javafx 2,我的系统上安装了以下内容- 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. XML包含 <project name="XYZ" default="XYZ" based
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.
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>
Java8的更新
在OracleJava8中,默认情况下,jfxrt.jar
位于类路径上,因此您不需要按照本答案中所述将其显式添加到类路径中。只有Java7才需要向类路径添加jfxrt.jar
编译问题是因为类路径中没有设置来自
jre\lib
的jfxrt.jar
导致taskdef错误的原因是指定给ant javafx.jar
值的路径未指向文件系统上的有效文件
我认为使用:
而不是,也可能会有问题代码>在分开的路径中,使用/
而不是\
来指定路径,但是ant似乎非常宽容这些事情,所以它们可能根本不重要
我创建了一个基于构建脚本的非常轻微的修改版本,该版本对我有效(没有taskdef警告,也没有编译错误)。它是为jdku9 windows 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
请注意,示例中的构建脚本非常基本,实际上只是作为入门脚本提供的,以帮助您继续。您最好也(比如fx:deploy
)来确保一个正确打包的应用程序,它支持点击运行jar之类的功能。或者使用NetBeans,让它为您生成适当的ant构建文件
我用来构建(使用)我链接的示例应用程序的修改后的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>
classpath=“:C:\Program files\..”应该有吗?@AkselWillgert对不起!我不明白你的意思?对给定的路径是正确的。什么。:代表什么?在你的构建脚本中,你有一些我不认识的角色。我建议您删除。:并查看发生了什么删除了之前的注释并给出了解释性的答案。我遇到了相同的问题,除了java 8。“那怎么办呢?”警察说,“我没有什么建议给你。”。正如我在回答中所说的,我不希望Oracle Java 8出现这个问题,因为jfxrt.jar位于Oracle Java 8类路径上。
<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>