Java 8 更新
在 Oracle Java 8 中,jfxrt.jar
默认情况下位于类路径上,因此您不需要按照此答案中的描述将其显式添加到类路径中。添加jfxrt.jar
仅 Java 7 才需要添加到类路径。
编译问题是因为jfxrt.jar
from jre\lib
未在类路径中设置。
导致taskdef错误的原因是指定的路径ant-javafx.jar
值不指向文件系统上的有效文件。
我认为使用 a 也可能存在问题:
而不是一个;
在分离路径和使用中/
而不是\
指定路径,但 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
请注意,示例中的构建脚本非常基本,实际上只是作为入门脚本提供以帮助您继续。你也过得最好添加ant任务以进行进一步的部署任务 (like fx:deploy
)以确保正确打包的应用程序支持点击运行 jar 等功能。或者使用 NetBeans 并让它为您生成适当的 ant 构建文件。
我用来构建的修改后的 Ant 脚本(使用蚂蚁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>