【问题标题】:JavaFX Ant build failed, JDK 10.0.2 Eclipse PhotonJavaFX Ant 构建失败,JDK 10.0.2 Eclipse Photon
【发布时间】:2019-02-09 10:06:30
【问题描述】:

我正在尝试在 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>

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

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

【问题讨论】:

  • 原因是${java.home}\..\lib\ant-javafx.jar的路径明显不对。

标签: java eclipse javafx build ant


【解决方案1】:

这可能有点晚了,但我没有看到答案,而且为我自己的项目进行故障排除有点痛苦。本教程有大部分正确的步骤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 文件夹中复制它。它可以自动化,但在您成功进行部署之前我不会担心它......然后自动化小部件直到您拥有一个运行良好的系统(只要我的两美分就值得)。

【讨论】:

  • 谢谢亚历山德罗。是的,我确认将 ant-javafx.jar 和 jfxrt.jar 指向正确的位置可以解决问题。
  • 如果这解决了问题,您能否将我的答案标记为解决方案?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 2019-03-04
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多