我正在使用Ant脚本来编译我的源代码。以前它编译完美。最近我添加了使用javafx特定类的类。在这个ant没有编译之后,它找不到javafx类。我正在使用jdk 7更新23,因为javk中包含javafx,我无法弄清楚为什么编译失败了?。
下面是我的蚂蚁脚本。<?xml version="1.0" encoding="UTF-8" ?>
<project name="client" basedir="." default="compile" >
<description>Client</description>
<property file="build.properties" />
<path id="classpath">
<fileset dir="${lib.dir}" includes="*.*"/>
</path>
<!-- Initialization -->
<target name="init" description="Prepare needed directories.">
<mkdir dir="${build.dir}" />
<mkdir dir="${classes.dir}" />
<mkdir dir="${jar.dir}" />
<mkdir dir="${dist.dir}" />
</target>
<!-- Cleanup -->
<target name="clean" description="Remove all files created by the build/test process.">
<delete dir="${classes.dir}" />
<delete dir="${dist.dir}" />
<delete dir="${build.dir}" />
</target>
<!-- Compile application -->
<target name="compile" depends="init" >
<mkdir dir="${classes.dir}"/>
<javac source="1.7" target="1.7" srcdir="${src.dir}" destdir="${classes.dir}" debug="yes" includeantruntime="false" fork="true" memorymaximumsize="1200m" >
<classpath refid="classpath" />
</javac>
</target>
<path id="lib.lib">
<fileset dir="../lib">
<include name="**/*"/>
</fileset>
</path>
<pathconvert property="mf.classpath" pathsep=" lib/">
<path refid="lib.lib"/>
<flattenmapper/>
</pathconvert>
<!-- Java Archive -->
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/Client.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Class-Path" value="lib/${mf.classpath}"/>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
</target>
</project>
答案 0 :(得分:0)
建议的解决方案
如果你想在JavaFX中使用ant,你应该使用Oracle的JavaFX ant tasks。
JavaFX运行时包含在Java 7中,Oracle JavaFX ant任务知道它的位置,因此当您使用Oracle ant任务时,引用JavaFX的项目构建工作。
为什么您当前的构建失败
您的脚本编译失败,因为JavaFX运行时(jfxrt.jar)不在Java 7的默认类路径上。
对于Java 8,JavaFX运行时位于类路径上。
您仍然可以使用没有Oracle JavaFX ant任务的普通ant来构建应用程序(只需确保jfxrt.jar位于构建步骤的类路径上),但是建议使用Oracle任务,因为它们也适当打包您的申请以供分发。