Ash*_*oli 6 java ant compilation build javafx-2
我在我的系统上安装了以下 -
Java version "1.7.0_09"
JavaFX 2.0 SDK
NetBeans 7.2.1
Run Code Online (Sandbox Code Playgroud)
当我尝试使用ANT编译代码时,它向我显示错误消息 -
Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found.
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
其他编译错误:
[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;
Run Code Online (Sandbox Code Playgroud)
Java 8更新
在Oracle Java 8中,jfxrt.jar默认位于类路径上,因此您无需将其显式添加到类路径中,如本答案中所述.jfxrt.jar只有Java 7才需要添加到类路径中.
编译问题是因为jfxrt.jar从jre\lib没有在classpath中设置.
导致taskdef错误的原因是指定给ant-javafx.jarvalue 的路径未指向文件系统上的有效文件.
我认为使用一个:而不是;分离路径和使用/而不是\指定路径也可能存在问题,但是蚂蚁似乎对这些事情非常宽容,所以它们可能根本不重要.
我创建了一个基于构建脚本的略微修改版本的示例项目,该脚本对我有用(没有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
Run Code Online (Sandbox Code Playgroud)
请注意,示例中的构建脚本非常基础,实际上只是作为启动脚本提供,以帮助您前进.您最好还为进一步的部署任务添加ant任务(例如fx:deploy),以确保正确打包的应用程序支持点击运行jar等功能.要么是这样,要么使用NetBeans并让它为您生成适当的ant构建文件.
我用来构建(使用ant 1.8.4)我修改的示例应用程序的修改后的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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12567 次 |
| 最近记录: |