經過 getResources 找不到jar包中的資源和目錄的解決方法

今天碰到一個怪問題: java

本來跑的好好的代碼,打成 jar 包就不能運行了。 eclipse

問題出在,代碼中有一段自動掃描 classpath 下面的指定 package 的 class spa

ClassLoader loader = Thread.currentThread().getContextClassLoader();
String packageDirName = packageName.replace('.', '/');
Enumeration<URL> dirs = loader.getResources(packageDirName);
居然獲得的 dirs 爲空??? 
打包前直接在 classes 目錄運行沒問題,打成 jar 就出問題了。


通過研究發現,是 eclipse 打的 jar 包有問題。
原來在 eclipse 打 jar 包時未勾選 「Add directory entries」選項引發的。
勾上,打包,問題解決。 code

另外注意: jar包的文件名只能是英文,不能包含其餘如「-」之類的符號。 blog


======================== ip

附上一段別人發現的區別: http://kyfxbl.iteye.com/blog/1675368 get

用jar命令,比較了一下兩種方法打出的jar包的區別,如圖: 

 

 

能夠看到,勾選了add directory entries以後打出的jar包,多了路徑的信息,可能這就是區別 

it

相關文章
相關標籤/搜索