我知道你可以通过添加
在命令行中运行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文件为这个操作创建一个脚本,但我正在考虑一些类似于系统设置或配置的东西,这些设置或配置将适用于所有带有javafx的jar文件,并且能够像java -jar myFile.jar一样正常地运行jar文件。
我正在使用Ant作为构建工具。
发布于 2022-03-11 09:18:50
推荐的替代品
有关jar发行版的推荐替代解决方案,请参见打包JavaFX标记的资源:jlink、jpackage或本机映像。
使用包含JavaFX的JRE
预装的包括JavaFX的Pre,例如一些Bellsoft、Zulu和Corretto发行版,将在没有附加模块说明符的情况下执行JavaFX应用程序,因为它们在发行版的基本模块设置中包含了JavaFX模块。
注意,如果要使用包含(并非所有JDK包括JavaFX )的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发行版:
- Define a `module-info.java`.
- This step isn’t strictly necessary or reasonably possible for some apps.注意: maven JavaFX插件一旦正确配置,就可以通过一个命令完成这些任务中的大部分:
mvn javafx:jlink附加信息
https://stackoverflow.com/questions/71429178
复制相似问题