我有一个JavaFX (JDK8)桌面业务应用程序,它使用Java Web Start进行部署。用户安装了Java 8,他们只需转到URL (我的AWS Linux服务器上的一个公共URL ),然后应用程序就会下载/启动(使用Web Start)。通过将新JAR部署到服务器,我也可以轻松地更新应用程序。一切都运行得很好。
然而,Oracle已经停止了Java 11的Web Start,在2018年3月的“Java客户端路线图更新”白皮书中,他们建议将JRE与应用程序捆绑在一起(“因此,应用程序与独立的JRE分开分发的概念很快就消失了。”)。我不能指望我的用户继续使用Java8进行Web Start,即使他们继续使用Java8,甲骨文也需要许可证才能继续使用Java8(我没有,这可能非常昂贵,而且我更愿意与社区一起转向JavaFX 11和OpenJDK)。
我想迁移到JavaFX 11。我遵循了OpenJFX的“Getting Started JavaFX11”(https://openjfx.io/openjfx-docs/),使用OpenJDK 11.0.1和Gluon的JavaFX SDK 11.0.1 (在Netbeans 10vc2上),并且已经能够运行示例应用程序(在我看来,我应该能够很容易地将我的JavaFX 8代码移植到JavaFX 11)。
然而,这就是我被困在方向上的地方。如何将其与JRE捆绑在一起,并将其部署到我的最终用户(并提供应用程序更新)?有没有简单的方法(或者甚至是困难的方法,有一些方向/指南)?
我可以花几百个小时在JavaFX 11中编写富有表现力、丰富而有用的桌面业务应用程序,但是我该怎么办呢?
部署工具包,如JWrapper、InstallAnywhere等,是否适合这个Java11的新时代?Gluon/openjfx.io是否有我遗漏的推荐或指南?我似乎找不到任何来自可靠来源的建议或指南,对于我们这些专注于编写前端代码的开发人员来说,他们是如何部署应用程序的。
感谢您的帮助或指导。
发布于 2020-03-28 23:34:52
为了更容易使用集成开发环境,我使用Intellij Idea;构建自动化,我使用gradle;jlink插件,我使用badass Jlink插件- https://badass-jlink-plugin.beryx.org/releases/latest/#jpackageImage。然后,您可以轻松地使用jlink和jpackage。这只是个想法。
发布于 2021-11-22 17:22:25
虽然其他答案有很多关于如何手动完成此操作的细节,但也可以使用构建工具插件,例如Maven。
例如,使用plugin,在JavaPackager中简单地添加如下内容可能已经足够了:
<plugin>
<groupId>io.github.fvarrui</groupId>
<artifactId>javapackager</artifactId>
<version>1.6.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>package</goal>
</goals>
<configuration>
<mainClass>...</mainClass>
<bundleJre>true</bundleJre>
<platform>windows</platform>
</configuration>
</execution>
</executions>
</plugin>运行mvn package将在“目标”中生成一个包含可执行文件的目录,一个"jre“目录和一个"libs”目录。该插件还可以生成安装程序文件。
显然,对于不同的平台,您需要调整配置,但我在Windows上使用JDK 16和17测试了这一点,它似乎工作得很好。
https://stackoverflow.com/questions/53453212
复制相似问题