gpt4 book ai didi

Java Jar 将多个 jar 组合成一个可执行 Jar

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:54 30 4
gpt4 key购买 nike

我知道要组合多个 jar 并创建一个可执行 jar,我需要使用像 OneJar 这样的工具如果我不想解压相关的 jar 。 OneJar 有自己的自定义类加载器,可以在关联的 jar 中找到所需的类并加载它们。

我的问题是:为什么默认类加载器无法从附加的 jar 中加载类。是因为安全吗?我希望能清楚地解释在创建一个包含其他依赖 jar(无需解包)的单个可执行 jar 时需要自定义类加载器的原因。谢谢,

最佳答案

技术原因是 jar: 的 uri 规范不支持嵌套。

您可以编写一个 URI 处理程序来满足此需求,但是当您嵌套在每个 jar 文件中时,性能将开始受到影响。

对于单个 jar 文件,随机访问是可能的,因为索引给出了文件系统偏移量,您可以查找每个偏移量并只读取您想要的文件

对于嵌套的 jar,您可以查找内部 jar,但要从该 jar 中拉出文件,您必须先从外部解压缩内部 jar,然后才能查找。

如果您不想将 jar 文件提取到临时目录并从生成的类路径构建您自己的类加载器,我会查看 OSGi 或 Maven Shade 插件提供的解决方案

关于Java Jar 将多个 jar 组合成一个可执行 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15804347/

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