使用 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 很常见。
繁花不似锦
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 的设置,您也可以检查它
添加回答
举报
0/150
提交
取消