簡體   English   中英

讀取在Zipfile中打包的Jar中找到的類

[英]Reading Classes found in a Jar packaged in a Zipfile

我花了很多時間進行分配,“讀取存儲在Zipfile中的Jar中找到的類文件”,並始終返回相同的ClassNotFoundException 我只是在尋求有關如何進行的指導。 我在各個站點上閱讀了許多有用的鏈接,但是由於任務艱巨或我缺乏知識而繼續遇到問題。

基本上,我的代碼成功讀取並讀取了Zipfile,創建了JarInputstream並找到了我請求的類文件。 我的問題是,在代碼執行代碼行時定位文件, cl.loadClass(className)拋出ClassNotFoundException

URL jarUrl = new URL("jar:file:/E:/temp/ZipTest/JarTest_08262014/JarTest3.zip!/activation.jar!/com/sun/activation/viewers/ImageViewer.class"); 
URLClassLoader cl = URLClassLoader.newInstance(new URL[] {jarUrl });
className= "com/sun/activation/viewers/ImageViewer.class";
Class loadedClass = cl.loadClass(className);   

一旦加載了類,就可以使用反射方法來讀取類文件。 我寫了一個類,當讀取目錄中的jar文件時可以使用。

我看了OpenJDK javap代碼,但沒有看到任何反射調用。 所以,我現在迷路了。 我構造了錯誤的URL嗎?

有什么建議么?

我認為您使用URLClassloader錯誤。 嘗試使用僅指向JAR文件的URL。 默認情況下,URLClassloader不允許使用嵌套Jar。

進一步:不要指定類的文件

手段:

className= "com/sun/activation/viewers/ImageViewer.class";

應該:

className= "com.sun.activation.viewers.ImageViewer";

早上好,

我只是想提供一個更新。

我花了更多時間探索其他線程,等等,但是決定從Zip中將jar文件提取到臨時目錄中。 我可以成功地使用R eflection類讀取類文件等。因此,到目前為止,我將使用該解決方案,直到提出另一個解決方案為止。

如果我確實找到了解決方案,請在此處發布。

感謝您的所有幫助,Rich

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM