为了账号安全,请及时绑定邮箱和手机立即绑定

在 jar 中使用 jar 时,Eclipse 生成的自定义类加载器在哪里?

在 jar 中使用 jar 时,Eclipse 生成的自定义类加载器在哪里?

慕尼黑的夜晚无繁华 2023-06-21 13:43:39
使用 Eclpise (和其他工具),可以将依赖项 jar 包含在另一个 jar 中。当 Eclipse 这样做时,它会生成一个自定义类加载器,因为“经典”类加载器无法在一个 jar 中找到另一个 jar 中的类。为了创建我的 jar ( package.final.jar),我:- 导入该 jar 以将其包含 ( dep.jar) 到libs/我项目的文件夹中;- 添加dep.jar到 MANIFEST.MF -> 运行时 -> 类路径(因此它将该行添加Bundle-ClassPath: libs/dep.jar,.到我的清单中);- 将我的项目导出为可部署的插件和片段。并且package.final.jar只包含这个结构:-META-INF/MANIFEST.MF -package/-class1.class          -class2.class          .          .          . -libs/dep.jar所以我想知道,Eclipse 创建的自定义类加载器在哪里?
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

对于 Eclipse 插件,Bundle-ClassPath插件的 MANIFEST.MF 中的条目告诉 Eclipse/OSGi 系统主插件 jar 中的哪些类和 jar 是类路径的一部分。

插件 jar 中没有添加额外的代码,Eclipse 类加载器处理包含的 jar。

因此,只要 MANIFEST.MF 正确,您就可以按照自己喜欢的方式构建 jar。现在使用 Maven + Eclipse tycho 很常见。


查看完整回答
反对 回复 2023-06-21
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

您的 jar 中应该有以下文件夹:org/eclipse/jdt/internal/jarinjarloader

包含Classloader等:

  • JIJConstants.class

  • JarRsrcLoader$ManifestInfo.class

  • JarRsrcLoader.class

  • RsrcURLConnection.class

  • RsrcURLStreamHandler.class

  • RsrcURLStreamHandlerFactory.class

如果您查看 META-INF/MANIFEST.MF-File 以查看 Main-Class 的设置,您也可以检查它


查看完整回答
反对 回复 2023-06-21
  • 2 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信