首页 > 解决方案 > JavaFX Ant 构建失败,JDK 10.0.2 Eclipse Photon

问题描述

我正在尝试在 Windows 10、Oracle JDK 10.0.2 和 Eclipse Photon 上构建 JavaFX 应用程序。该应用程序可以工作,如果我将其导出为可执行 jar 它也可以工作。为了正确构建,我打开“FX Build Configuration”,单击“Generate ant build.xml and run”。构建失败并出现以下错误:

init-fx-tasks:
    [taskdef] Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found.

do-deploy:
BUILD FAILED
C:\Users\myname\eclipse-workspace\MyProgram\build\build.xml:90: Problem: failed to create task or type javafx:com.sun.javafx.tools.ant:resources
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
No types or tasks have been defined in this namespace yet

浏览论坛我了解问题与运行时/构建环境有关。自动生成的build.xml状态

<target name="init-fx-tasks">
<path id="fxant">
    <filelist>
        <file name="${java.home}\..\lib\ant-javafx.jar"/>
        <file name="${java.home}\lib\jfxrt.jar"/>
    </filelist>
</path>
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
    uri="javafx:com.sun.javafx.tools.ant"
    classpathref="fxant"/>
</target>

我用 intaller 的默认路径安装了 Oracle JDK:C:\Program Files\Java\jdk-10.0.2和 JRE C:\Program Files\Java\jre-10.0.2,但是在文件系统的任何地方都找不到jfxrt.jar所需的build.xml,而我可以找到C:\Program Files\Java\jdk-10.0.2\lib\ant-javafx.jar.

在 Eclipse Photon 中,Run->External Tools->External Tools Configuration->JRE选择“Separate JRE”项并将其设置为“jdk-10.0.2”。有人知道如何解决这个问题吗?非常感谢

标签: javaeclipsejavafxbuildant

解决方案


这可能有点晚了,但我没有看到答案,为我自己的项目进行故障排除有点痛苦。本教程包含大部分正确步骤https://code.makery.ch/library/javafx-tutorial/part7/,但归结为修复一些问题,例如 ${java.home} 变量指向的位置,我的指出:

C:\Program Files\Java\jre1.8.0_191

这意味着在这些位置找不到 jfxrt.jar 和 ant-javafx.jar,所以我将它们更改为以下内容:

<filelist>
  <file name="${java.home}\..\jdk1.8.0_191\lib\ant-javafx.jar"/>
  <file name="${java.home}\lib\ext\jfxrt.jar"/>
  <file name="${basedir}"/>
</filelist>

这很有效,因为我的工作计算机上同时有 JRE 和 JDK。还要确保您安装了 E(fx)clipse。如果您有资源文件、自定义图像等,请确保部署结构与您的项目相匹配。我通常在我的项目的根目录上创建一个部署文件夹,然后从 build.xml 生成的 dist 文件夹中复制它。它可以自动化,但在您成功部署之前我不会担心它......然后自动化小部件直到您拥有一个运行良好的系统(只需我的两美分就值得)。


推荐阅读