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

使用 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 创建的自定义类加载器在哪里?


慕尼黑的夜晚无繁华
浏览 73回答 2
2回答

阿晨1998

对于 Eclipse 插件,Bundle-ClassPath插件的 MANIFEST.MF 中的条目告诉 Eclipse/OSGi 系统主插件 jar 中的哪些类和 jar 是类路径的一部分。插件 jar 中没有添加额外的代码,Eclipse 类加载器处理包含的 jar。因此,只要 MANIFEST.MF 正确,您就可以按照自己喜欢的方式构建 jar。现在使用 Maven + Eclipse tycho 很常见。

繁花不似锦

您的 jar 中应该有以下文件夹:org/eclipse/jdt/internal/jarinjarloader包含Classloader等:JIJConstants.classJarRsrcLoader$ManifestInfo.classJarRsrcLoader.classRsrcURLConnection.classRsrcURLStreamHandler.classRsrcURLStreamHandlerFactory.class如果您查看 META-INF/MANIFEST.MF-File 以查看 Main-Class 的设置,您也可以检查它
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java