今天碰到一個怪問題: java
本來跑的好好的代碼,打成 jar 包就不能運行了。 eclipse
問題出在,代碼中有一段自動掃描 classpath 下面的指定 package 的 class spa
ClassLoader loader = Thread.currentThread().getContextClassLoader(); String packageDirName = packageName.replace('.', '/'); Enumeration<URL> dirs = loader.getResources(packageDirName);居然獲得的 dirs 爲空???
通過研究發現,是 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