使用 Eclpise (和其他工具),可以將依賴項 jar 包含在另一個 jar 中。當 Eclipse 這樣做時,它會生成一個自定義類加載器,因為“經(jīng)典”類加載器無法在一個 jar 中找到另一個 jar 中的類。為了創(chuàng)建我的 jar (?package.final.jar),我:- 導入該 jar 以將其包含 (?dep.jar) 到libs/我項目的文件夾中;- 添加dep.jar到 MANIFEST.MF -> 運行時 -> 類路徑(因此它將該行添加Bundle-ClassPath: libs/dep.jar,.到我的清單中);- 將我的項目導出為可部署的插件和片段。并且package.final.jar只包含這個結(jié)構(gòu):-META-INF/MANIFEST.MF
-package/-class1.class
?????????-class2.class
?????????.
?????????.
?????????.
-libs/dep.jar所以我想知道,Eclipse 創(chuàng)建的自定義類加載器在哪里?
2 回答

阿晨1998
TA貢獻2037條經(jīng)驗 獲得超6個贊
對于 Eclipse 插件,Bundle-ClassPath
插件的 MANIFEST.MF 中的條目告訴 Eclipse/OSGi 系統(tǒng)主插件 jar 中的哪些類和 jar 是類路徑的一部分。
插件 jar 中沒有添加額外的代碼,Eclipse 類加載器處理包含的 jar。
因此,只要 MANIFEST.MF 正確,您就可以按照自己喜歡的方式構(gòu)建 jar。現(xiàn)在使用 Maven + Eclipse tycho 很常見。

繁花不似錦
TA貢獻1851條經(jīng)驗 獲得超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 的設(shè)置,您也可以檢查它
添加回答
舉報
0/150
提交
取消