编译时,Ant脚本无法检测到javafx类

时间:2013-12-04 05:27:39

标签: ant compilation javafx

我正在使用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>

1 个答案:

答案 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任务,因为它们也适当打包您的申请以供分发。


另请参阅:Compile code using JavaFX 2.0 (using command line)