Java 9 javapacker 在创建 bss 时找不到 jfxrt.jar。在 Linux 下似乎在 "createbss"模式下完全损坏。如何避免错误?

标签 java javafx java-9 javafx-9

我有带有 Sun JDE 9.0.1 的 Ubuntu Linux 系统,我需要从控制台将一些 Fx 的 CSS 文件转换为二进制形式。 但是当我执行命令时:

javapackager  -createbss -outdir . -srcdir .

我得到一个错误:

Error: jfxrt.jar needs to be on classpath for -createbss and for -createJar without -nocss2bin

我的 JDK 已正确安装。我有所有必要的模块(包括 FX)。 有什么想法可以避免愚蠢的错误并让打包程序完成它的工作吗? 如果我从“/usr/lib/jvm/java-9-oracle/jmods”目录运行 javapackager,它会无误地完成。所以现在我正在使用一个丑陋的修复程序,搜索模块目录,使其成为当前目录,然后从那里运行 packager。但这太他妈丑了。 javapackager 不接受除 outdir、srcdir 和 srcfiles 之外的任何其他参数,因此我无法强制加载或查找 jfx 模块的路径。但是可能有一些环境变量的技巧或可以使修复不那么难看的东西吗?

附言从 jmod 目录运行或从参数中删除“-srcdir”可消除错误,但打包程序不会生成任何输出文件(即使我使用“-srcfiles”指定输入文件)。似乎 javapackager 在 createbss 模式下完全损坏。有人将它与 Java 9 一起使用吗?

最佳答案

我检查了源代码——来自 JDK 9.0.1 的 javapackager 完全损坏了!使用 Java 8 的可执行文件。我向 Oracle 填写了错误报告,突然间他们非常惊讶(没有人注意到核心工具的基本功能之一被破坏了吗?!)。

临时解决方案:使用 JDK 1.8 中的 javapackaged 工具。您所需要的只是可执行文件本身,您可以将其放在任何地方。我将它直接放入我的项目树中(在“工具”目录下)并从构建脚本中调用。警告!仅将此替换的可执行文件用于“createbss”!将常规的用于所有其他事情!

关于Java 9 javapacker 在创建 bss 时找不到 jfxrt.jar。在 Linux 下似乎在 "createbss"模式下完全损坏。如何避免错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47733618/

相关文章:

java - Android:从全屏 Activity 返回后布局被破坏

java - 是否可以在 Android Pepper Robot 模拟器中测试讨论操作

java - Badass 运行时 suggestModules NPE 问题

单击按钮时的 JavaFX 警告框

java - 带有 Gradle 插件的 Findbugs 在 Java 9 中不起作用

java - IntentService确实广播但onReceive没有收到广播

java - 是否可以禁用 spring cloud stream starter 应用程序的安全性?

java - 如何将监听器添加到分隔符位置?

java - maven-release-plugin 是否与 Java 9 兼容?

Java 9 在禁用调整大小后更改了 JFrame 的默认标题高度