当前位置: 首页 > 知识库问答 >
问题:

使用JavaFX14和FXML文件构建独立的JAR

空鸿云
2023-03-14

我已经搜索了好几个小时试图找到我要找的东西,但是关于JavaFX最新版本的信息似乎很少。

对于一个项目,我需要交付一个独立的可执行JAR文件,该文件可以在任何安装了java的计算机上运行。我使用的是JDK14和JavaFX14,而不是Maven或Gradle(尽管如果其中一个是必需的,我没有理由不能使用它们)。

我的项目在IntelliJ中运行得很好,VM选项指向我的JavaFX lib文件夹,但我找不到如何正确构建一个可以在其他系统不使用JavaFX的情况下分发和执行的JAR。例如,我希望JavaFX、我的FXML文件以及我的其他依赖项(包括JDBC)捆绑在JAR中。这可能吗?

如果我需要提供更多的信息,请告诉我。谢谢伙计们。

共有1个答案

燕琨
2023-03-14

我找到了 Frankenstein 解决方案!

IntelliJ可以将外部库从Maven存储库添加到常规Java项目中,而不需要将其实际转换为Maven项目(事实上,我已经在为JUnit使用它了)。我添加了JavaFX依赖项,如下所示:

首先,我删除了现有的依赖项,并删除了VM选项(这些将不再是必需的)

    null

构建->构建人工制品

运行时,我得到一个错误,告诉我它正在寻找一个FXML文件,所以我将我的FXMLs复制到相同的位置,令我惊讶的是,它运行得完美无缺! 我现在计划在项目中创建一个类,以便在JavaFx代码运行之前生成FXML文件,这样,我仍然可以分发单个JAR。

编辑(感谢@slaw提供帮助)

myFxmlLoader.setlocation(MyClass.class.getResource("myFXMLFile.fxml"));

也谢谢大家的建议!

 类似资料:
  • 我在htmlunitdriver.java文件中做了一个补丁,如下文所述:使用WebDriver(HtmlUnit,Ruby绑定)时是否可能忽略JavaScript异常 我已经学习了关于selenium build wiki和自述文件中的说明,以及这里给出的技巧:构建selenium服务器项目 但是,我没有一个像selenium-server-standalone-2.25.0.jar这样的jar

  • 即使 M600 与手机断开连接,M600 的部分基本功能仍可继续使用。 在独立模式下,您能: 了解时间、查看日期。 使用 Polar 应用程式进行训练。 如果您的智能手表已经接到Wi-Fi网络,请使用应用程式商店。 使用码表。 使用计时器。 查看您当日的时间表。 设置闹钟。 查看您的步数。 查看您的心率。 更改手表表面。 使用飞行模式。

  • 你也可以在spring容器外使用repository组件,比如在CDI环境中,你依然需要一些spring的libraries在你的classpath中,但通常你也能以编程的方式来搭建repositories。你可以像下面示例一样使用由Spring Data模块提供各种repository持久化支持的RepositoryFactory。 RepositoryFactorySupport factor

  • 请帮帮我,我用两个外部jar文件开发了一个简单的应用程序。在清理和构建的同时,它为应用程序和dist目录中的库文件夹创建了一个jar文件。当我尝试作为jar执行时,它执行得很完美