首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:缺少JavaFX运行时组件(永久解决方案)

错误:缺少JavaFX运行时组件(永久解决方案)
EN

Stack Overflow用户
提问于 2022-03-10 18:38:26
回答 1查看 712关注 0票数 1

我知道你可以通过添加

在命令行中运行jar文件时,--module-path "pathToLib" --add-modules javafx.controls,javafx.fxml,javafx.graphics

但是我的问题是,在系统设置或配置中没有永久的解决方案来解决这个错误,并且能够像java -jar myfile.jar那样正常地运行一个java -jar myfile.jar文件,而不是每次我应该添加模块java --module-path "C:\Users\..\Downloads\javafx-sdk-17.0.2\lib" --add-modules javafx.controls,javafx.fxml,javafx.graphics -jar myfile.jar时都这样运行。

此外,我知道您可以为每个jar文件为这个操作创建一个脚本,但我正在考虑一些类似于系统设置或配置的东西,这些设置或配置将适用于所有带有javafxjar文件,并且能够像java -jar myFile.jar一样正常地运行jar文件。

我正在使用Ant作为构建工具。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-11 09:18:50

推荐的替代品

有关jar发行版的推荐替代解决方案,请参见打包JavaFX标记的资源:jlink、jpackage或本机映像。

使用包含JavaFX的JRE

预装的包括JavaFX的Pre,例如一些Bellsoft、Zulu和Corretto发行版,将在没有附加模块说明符的情况下执行JavaFX应用程序,因为它们在发行版的基本模块设置中包含了JavaFX模块。

注意,如果要使用包含(并非所有JDK包括JavaFX )的JDK,则必须使用JDK的正确版本:

  • 对于BellSoft,下载并安装“完整JDK",而不是”标准JDK“。
  • 对于Zulu,下载并安装包类型为"JDK“,而不是"JDK”。

您还可以使用jlink创建包含JavaFX模块的自己的JRE发行版(这实际上比听起来更简单)。

使用ant构建一个包含App和JavaFX组件的JAR

但我仍然希望,在使用ANT作为JavaFX的构建工具时,可能会有一个解决方案。

在这个答案中有一些关于用ant构建模块化JavaFX应用程序的信息:

不过,这可能不是你想要的一切。

要使用ant创建一个可执行的jar,可以尝试在类路径回答上模拟这个maven JavaFX阴影的输出:

但是使用ant任务来构建巨大的阴影jar而不是maven。我没有明确的说明,你需要自己去完成这个重要的任务。

创建的jar将包括一个启动程序类、应用程序代码、依赖库代码、JavaFX java和本机代码。只要包含了相关平台的本机代码,jar就会在任何现代JRE上运行。jar将在不受支持的类路径配置中运行。

Zip分布

或者(更好)创建一个zip发行版:

  1. 只需将自己的代码放入应用程序jar中。
  2. 将依赖库和JavaFX模块放在lib目录中。
  3. 创建一个调用Java的脚本,使用添加的lib目录中的模块运行jar文件。
  4. 如果可能的话,让你的应用程序模块化:
代码语言:javascript
运行
复制
- Define a `module-info.java`.
- This step isn’t strictly necessary or reasonably possible for some apps.
  1. 使用ant将所有内容放置在zip文件中以供分发。
  2. 如果需要,在zip中包含一个jlink生成的JRE。

注意: maven JavaFX插件一旦正确配置,就可以通过一个命令完成这些任务中的大部分:

代码语言:javascript
运行
复制
mvn javafx:jlink

附加信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71429178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档