小编Ham*_*258的帖子

如何在Java 11上以非模块化依赖项打包应用程序

我开发并分发了使用Apache Batik和JavaCV的Java Swing应用程序。我已经通过Java 1.6、7和8更新了它。macOS,Windows和Linux的安装程序是使用Javapackager构建的。Java 8的支持在19年1月终止,我找不到在新的LTS版本Java 11上打包和分发的解决方案。

JavaCV或Batik都不生产模块化jar,但是我设法将它们重新打包到可以在Java 11上编译并生成可运行jar的程度,app可以正常工作,但我不能打包以进行分发。我打算降级到Java 10以使用javapackager并从那里捆绑11个运行时,但是它使用jlink生成自定义运行时,因为JavaCV和Batik不是模块化的,所以jlink失败了。由于Batik和JavaCV中的引用不令人满意,即使我的应用程序在没有它们的情况下也能正常工作,但jdeps不会生成用于修补的module-info.class并使它们模块化。

结果,我将不得不离开Java 8的代码库,即使不再支持它,也要交付它。

我知道有一个调用来创建javapackager的替代品,但是直到Java 8被弃用之后才会出现。而且我仍然需要Batik和JavaCV项目来重构和构建模块化jar,以生成自定义运行时。

任何人都可以提供其他解决方案吗?我错过了什么吗?谢谢。

java jlink javapackager jdeps java-11

6
推荐指数
1
解决办法
1951
查看次数

标签 统计

java ×1

java-11 ×1

javapackager ×1

jdeps ×1

jlink ×1