我开发并分发了一个使用 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 的程度,应用程序工作正常,但我无法将其打包以进行分发。我计划下降到 Java 10 以使用 javapackager 并从那里捆绑 11 运行时,但它使用 jlink 生成自定义运行时,jlink 失败,因为 JavaCV 和 Batik 不是模块化的。由于 Batik 和 JavaCV 中的引用不满意,jdeps 不会生成 module-info.class 来修补并使它们模块化,即使我的应用程序在没有它们的情况下也能正常工作。
结果,我将不得不将代码库保留在 Java 8 中,并且即使不再受支持,也要发布它。
我知道有一个调用来创建 javapackager 的替代品,但直到 Java 8 被弃用之后才会出现。而且我仍然需要 Batik 和 JavaCV 项目来重构和构建模块化 jar 以生成自定义运行时。
谁能提供任何其他解决方案?我错过了什么吗?谢谢。