一个关于动态加载JAR包的问题。

bigbiga 2013-12-25 06:42:05
使用 URLClassLoader addUrl动态载入了一个JAR包。

里面的类可以反射出来正常使用,但是里面的资源不能正常使用。

指定资源路径及名称可以成功。
URL url =ClassLoader.getResource("xxx/xxx/xxx.xml"); //可以正常使用。


下面的通配符匹配就会不成功。
Enumeration<URL> e =ClassLoader.getResources("xxx/xxx/*.xml");//返回为空。

哪位遇到过,帮解释一下。



...全文
308 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbiga 2013-12-27
  • 打赏
  • 举报
回复
看过了,getResource() 无法获取到由URLClassLoader addUrl动态载入了一个JAR包里的 PATH,所以,后面的通配符搜索就是无效的。 主要是URLClassLoader addUrl动态载入了一个JAR包时,getResource("com/abc/")无法获取到PATH。
tony4geek 2013-12-27
  • 打赏
  • 举报
回复
其实你可以看下spring 的源码,它里面有具体怎么解析 通配符 的文件。
bigbiga 2013-12-27
  • 打赏
  • 举报
回复
Thread.currentThread().getContextClassLoader(); 没有解决问题,依然找不着资源文件。
bigbiga 2013-12-26
  • 打赏
  • 举报
回复
再补问一下, Spring 里 classpath*:xxx/xxx/*.xml 这个怎么解决?同样是找不着通配符的资源。
UDown 2013-12-25
  • 打赏
  • 举报
回复
Enumeration<URL> e =ClassLoader.getResources("xxx/xxx/*.xml");//返回为空。
改成
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Enumeration<URL> resources = classLoader.getResources("xxx/xxx/*.xml");
lz结贴吧

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧