使用ANT编译JavaFX代码
我在我的系统上安装了以下 –
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包含
simple example build file
其他编译错误:
[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;
Java 8更新
在Oracle Java 8中,默认情况下jfxrt.jar
位于类路径上,因此您无需将其显式添加到类路径中,如本答案中所述。 只有Java 7才需要将jfxrt.jar
添加到类路径中。
编译问题是因为jre\lib
jfxrt.jar
未在类路径中设置。
导致taskdef错误是因为指定给ant-javafx.jar
值的路径未指向文件系统上的有效文件。
我认为使用a可能还有问题:
而不是a ;
在分离路径和使用/
而不是\
来指定路径,但ant似乎对这些事情非常宽容,所以它们可能根本不重要。
我创建了一个基于构建脚本的略微修改版本的示例项目 ,它对我有用(没有taskdef警告,也没有编译错误)。 它是为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
请注意,示例中的构建脚本非常基础,实际上只是作为启动脚本提供,以帮助您前进。 您最好还为进一步的部署任务 (如fx:deploy
) 添加ant任务,以确保正确打包的应用程序支持点击运行jar等function。 要么是这样,要么使用NetBeans并让它为您生成适当的ant构建文件。
我用来构建(使用ant 1.8.4 )我修改的示例应用程序的修改后的ant脚本是: