gpt4 book ai didi

java - 如何构建一个包含运行 Java 应用程序所需的所有类的单个捆绑 JAR?

转载 作者:行者123 更新时间:2023-12-02 11:07:21 25 4
gpt4 key购买 nike

我将使用自定义启动器部署 Java 应用程序,并且我需要将应用程序所需的所有类放在单个 jar 文件中,这样我就不必使用它来部署整个 Java SE 库。

我正在考虑使用一些预先存在的 ant 任务来创建一个目标,该目标递归地搜索所有已编译的类文件以查找其依赖项。确定所有依赖项后,它将从 JAR 中提取所需的类文件,将其与我的类一起复制到输出目录并从中生成一个 jar。

如果没有现成可用的此类东西,我可以自己创建一个,但我需要知道对其他类的引用如何存储在 .class 文件中。如果有某种 Java 库(例如 .NET 的 Mono.Cecil/System.Reflection)公开用于检查/操作 Java 的高级 API,那么事情可能会容易得多。

由于我是 Java 新手,我在寻找完成这些事情所需的东西时遇到了一些麻烦。有人可以给我一些指导吗?

最佳答案

不幸的是,您不能仅发布 Java SE 的一部分 - 这将违反许可协议(protocol)。如果您使用 Java SE,则所有 Java SE 都必须可用。

实现此目的的最简单方法是使用 Ahead Of Time 编译器。它们只负责打包您需要的类,并通过可选下载提供 JDK 的“未使用”部分来遵守 JDK 许可协议(protocol)。

例如,Excelsior JET是一个很好的 AOT 编译器,它将只打包您需要的类。尽管开源项目可以申请免费许可,但它并不是免费用于商业用途。

或者,您可以简单地假设用户已经拥有 JRE,因为它安装在超过 90% 的桌面上,并且在 JRE 不可用的情况下,让您的安装程序为用户下载一个。 AdvancedInstaller有一个免费版本可以实现此目的。

关于java - 如何构建一个包含运行 Java 应用程序所需的所有类的单个捆绑 JAR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3290081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com