java - 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”。有人知道如何解决这个问题吗?非常感谢
解决方案
这可能有点晚了,但我没有看到答案,为我自己的项目进行故障排除有点痛苦。本教程包含大部分正确步骤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 文件夹中复制它。它可以自动化,但在您成功部署之前我不会担心它......然后自动化小部件直到您拥有一个运行良好的系统(只需我的两美分就值得)。
推荐阅读
- python - 使用熊猫的宽到长数据集
- regex - Notepad ++:如何删除除包含句点的所有字符串
- javascript - 有没有办法获得实际的 css 列宽度和间隙?
- django - 聊天套接字(网络套接字)意外关闭(django-channels)?
- html - Angular 8:无法从 Rest Api 获取消息
- jenkins - 带参数的waitForQualityGate
- c# - 如何修复“解码时发现无效数据”。
- javascript - fs.writeFile 不是一个函数 Electron/React
- jquery - 动态更改输入标签
- ios - 如何在 UITextView 中禁用垂直滚动?