码迷,mamicode.com
首页 > 编程语言 > 详细

通过 getResources 找不到jar包中的资源和目录的解决方法

时间:2016-08-17 13:54:53      阅读:476      评论:0      收藏:0      [点我收藏+]

标签:

http://my.oschina.net/sub/blog/184074

今天碰到一个怪问题:

原本跑的好好的代码,打成 jar 包就不能运行了。

问题出在,代码中有一段自动扫描 classpath 下面的指定 package 的 class

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”选项引起的。
勾上,打包,问题解决。

另外注意: jar包的文件名只能是英文,不能包含其他如“-”之类的符号。

技术分享

========================

附上一段别人发现的区别: http://kyfxbl.iteye.com/blog/1675368

用jar命令,比较了一下两种方法打出的jar包的区别,如图: 

技术分享 

技术分享 

可以看到,勾选了add directory entries之后打出的jar包,多了路径的信息,可能这就是区别 

通过 getResources 找不到jar包中的资源和目录的解决方法

标签:

原文地址:http://www.cnblogs.com/exmyth/p/5779546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!