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

将JavaFX应用程序与openjdk 11运行时捆绑

习狐若
2023-03-14

我创建了一个依赖于OpenJDK 11和JavaFX的HelloWorldJava小应用程序。该应用程序打包在jar文件中,只有在我的系统上单独安装Java11和JavaFX时才能运行。

现在,我想将我的jar转换成一个自包含的Java应用程序,其中包括JavaFX和一个功能齐全的Java运行时环境。这将允许我在不安装OpenJDK 11的情况下运行我的应用程序(这会带来技术障碍,例如正确设置路径等)。

我可以找到关于在Java 10上创建自包含Java应用程序的信息,但找不到关于将Java应用程序与OpenJDK 11和JavaFX捆绑在一起的信息。

如何使用OpenJDK 11和JavaFX发布一个自包含的Java应用程序(包括Java运行时)?

共有3个答案

薛弘济
2023-03-14

也许您只需等待一点,直到新的jpackager工具的第一个EA版本可用。看见http://mail.openjdk.java.net/pipermail/core-libs-dev/2018-October/056186.html

臧彭亮
2023-03-14

您可以将整个JDK与您的应用程序捆绑在一起,并创建一个批处理脚本来使用捆绑的JDK运行您的应用程序。我知道这种方法会显着膨胀您的发布,但另一种选择是要求您的用户自己安装JDK,这对于非技术精通的人来说并不容易。或者您可以发布两个版本,一个捆绑了JDK,另一个没有。

芮学
2023-03-14

在JavaFX从Oracle剥离到Gluon之后,请遵循这些教程

您需要使用模块化Java编写代码。将JavaFX 11作为依赖项添加到您的项目中。并使用新的链接/打包工具在您的应用程序中捆绑JDK的子集。

了解:

  • Java平台模块系统

Oracle不再打算让最终用户安装JRE或JDK。浏览器中的Java小程序和Java Web Start应用程序交付都在逐步淘汰,最终用户不需要JRE。基于Java的应用程序有望捆绑自己的Java实现。唯一有意识地安装JDK的人将是开发人员

重要:

  • 如维基百科所述,清楚地理解OpenJDK项目的本质

这是一个流程图,可以帮助您在提供Java 11实现的各个供应商中查找和决定。

 类似资料:
  • 背景: 在我的组织中,有很多基于Java的Windows桌面应用程序。在我们的专有软件部署系统中,应用程序不包含单独的JRE/JDK。而是将一个通用的JRE(到目前为止,Oracle8 Java SE JRE)部署到用户机器上,该机器根据环境变量附加到各个应用程序。 此外,是否可以在JDK11上使用jlink来创建一个包含被删除的Java SE EE模块的运行时?我可以使用Java10中的jlin

  • 例如。 这应该运行一个简单的hello world应用程序,摘自oracle文档。然而,当我‘运行’这个代码,没有窗口打开。取而代之的是打开一个名为“Java”的应用程序。看起来'java'只是一个位于'jdk1.8.0_25.jdk/contents/home/bin'中的'UNIX可执行文件‘。应用程序'java'绝对不显示任何东西,并且在没有强制退出的情况下无法关闭。 我在MacBook上运

  • 版本 openjdk版本“11.0.11”2021-04-20 如果可能的话,请不要告诉我像我以前看到其他人回答的那样“阅读基础知识”。我只是不确定为什么我的代码不能在我的最后一个项目中运行。 提前谢谢你!

  • 我想在JavaFX应用程序中使用Selenium WebDriver,我想获得一个网页的截图,并在JavaFX应用程序中的ImageView中显示它。 此代码完全可以拍摄网页截图并保存: 为了在JavaFX应用程序中使用保存的屏幕截图,我试图对这个类进行一些简单的修改,使其成为一个JavaFX应用程序。 以下是修改后的代码: 这是一个最简单的JavaFX应用程序,在main方法中有一些代码,当我运

  • 我用的是edu。seis理学学士。启动4J插件,使用gradle构建脚本构建可分发的应用程序。我正试图用一个捆绑的JRE来制作这些。 这是格雷德尔的剧本 令人沮丧的是,这创建了一个运行的应用程序(由gradle任务createExe创建的exe),但显然没有捆绑在/旁边的JRE,大概是因为它运行是因为它返回到使用系统jre,这使得测试变得困难。如果我把一个故意损坏的jre放在 /jre/它似乎仍然

  • 作为一个软件开发人员,我需要做哪些步骤来允许我的JavaFX应用程序与JDK11+一起运行?有什么好的广告吗?是否可以通过Gradle获得OpenJDK?