JavaFX Ant 构建失败,JDK 10.0.2 Eclipse Photon
JavaFX Ant build failed, 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
浏览论坛我了解到问题与runtime/build环境有关。自动生成的 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->External Tools->External Tools Configuration->JRE
中选择了项目 "Separate JRE" 并将其设置为 "jdk-10.0.2"。
有人知道如何解决这个问题吗?
非常感谢
这可能有点晚了,但我没有看到答案,为我自己的项目排除故障有点痛苦。本教程包含大部分正确的步骤 https://code.makery.ch/library/javafx-tutorial/part7/,但归结为修复一些问题,比如你的 ${java.home} 变量指向的位置,我的指向:
C:\程序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。如果您有资源文件、自定义图像等,请确保部署结构与您的项目相匹配。我通常在项目的根目录下创建一个 deploy 文件夹,然后从 build.xml 生成的 dist 文件夹中复制它。它可以自动化,但在您成功部署之前我不会担心它......然后自动化小部件直到您拥有一个运行良好的系统(只是我的两分钱是值得的)。
我正在尝试在 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
浏览论坛我了解到问题与runtime/build环境有关。自动生成的 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->External Tools->External Tools Configuration->JRE
中选择了项目 "Separate JRE" 并将其设置为 "jdk-10.0.2"。
有人知道如何解决这个问题吗?
非常感谢
这可能有点晚了,但我没有看到答案,为我自己的项目排除故障有点痛苦。本教程包含大部分正确的步骤 https://code.makery.ch/library/javafx-tutorial/part7/,但归结为修复一些问题,比如你的 ${java.home} 变量指向的位置,我的指向:
C:\程序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。如果您有资源文件、自定义图像等,请确保部署结构与您的项目相匹配。我通常在项目的根目录下创建一个 deploy 文件夹,然后从 build.xml 生成的 dist 文件夹中复制它。它可以自动化,但在您成功部署之前我不会担心它......然后自动化小部件直到您拥有一个运行良好的系统(只是我的两分钱是值得的)。