通过 getResources 找不到jar包中的资源和目录的解决方法
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包中的资源和目录的解决方法的更多相关文章
- 读取Jar包中的资源问题探究
最近在写一个可执行jar的程序,程序中包含了2个资源包,一个是images,一个是files.问题来了,在Eclipse里开发的时候,当用File类来获取files下面的文件时,没有任何问题.但是当程 ...
- java 从jar包中读取资源文件
在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...
- (转)java 从jar包中读取资源文件
(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...
- 深入jar包:从jar包中读取资源文件getResourceAsStream
一.背景 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等). 在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不 ...
- 【解惑】深入jar包:从jar包中读取资源文件
[解惑]深入jar包:从jar包中读取资源文件 http://hxraid.iteye.com/blog/483115 TransferData组件的spring配置文件路径:/D:/develop/ ...
- Java如何获取当前的jar包路径以及如何读取jar包中的资源
写作业的时候要输出一个record.dat文件到jar包的同级目录,但是不知道怎么定位jar包的路径.百度到的方法不很靠谱,所以在这里记录一下. 一:使用类路径 String path = this. ...
- Jar中的Java程序如何读取Jar包中的资源文件
Jar中的Java程序如何读取Jar包中的资源文件 比如项目的组织结构如下(以idea中的项目为例): |-ProjectName |-.idea/ //这个目录是idea中项目的属性文件夹 |-s ...
- springmvc获取jar中的静态资源与jar包中的资源互相引用问题
1.首先看jar中的文件位置 2.在web工程中引用该jar 并且在springmvc文件中配置路径 如果有多个路径可用逗号隔开 3.在web工程找jsp页面如何引用 这样就可以了 关于jar中的资源 ...
- [Java基础] 深入jar包:从jar包中读取资源文件
转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的 ...
随机推荐
- jsp 验证码
<%@page import="java.awt.Graphics2D"%> <%@page import="java.util.Random" ...
- 010-- 开发脚本自动部署nginx_web和nfs及监控内存
1.编写脚本自动部署反向代理.web.nfs: #!/bin/bash #检测安装nginx function detection_nginx(){ if [ -f /etc/nginx/nginx. ...
- UVaLive 6950 && Gym 100299K Digraphs (DFS找环或者是找最长链)
题意:有n个只包含两个字母的字符串, 要求构造一个m*m的字母矩阵, 使得矩阵的每行每列都不包含所给的字符串, m要尽量大, 如果大于20的话构造20*20的矩阵就行了. 析:开始吧,并没有读对题意, ...
- thrift配置——windows客户端与linux服务端通信(C++)
windows客户端: 1.首先要安装boost库 下载源文件 2.安装boost之前先要安装python-3.4.0.amd64,很多地方没有说,弄了很久 3.运行bootstrap.bat 生成b ...
- CCF2016.4 - C题
思路:先把路径按反斜杠split成数组,然后用一个ArrayList去模拟.如果遇到空或者.则不处理:如果遇到..则删除ArrayList最后一个元素(注意如果只有1个元素则不删除):其他情况直接加到 ...
- P5167 xtq的神笔
传送门 题解 倍增也好二分也好,果然复杂度只要和\(\log\)插上关系就没我啥事了-- 首先由一个显而易见然而我完全没有发现的结论,设\(calc(l,r)\)表示区间\([l,r]\)的\(or\ ...
- springcloud(二) 负载均衡器 ribbon
代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo ribbon是一个负载均衡客户端 类似nginx反向代理,可 ...
- 面向对象-self这个特殊的参数
self: 1.只是一个参数. 2.在对象使用方法的时候,当前对象会作为第一个参数的实参传入 3.self相当于语言中的代词,表示当前对象本身(其他语言中也有使用this) 4.self的作用连接整个 ...
- Linux 命令行光标操作
转自: https://blog.csdn.net/leo_618/article/details/53003111 看一个真正的专家操作命令行绝对是一种很好的体验-光标在单词之间来回穿梭,命令行不同 ...
- 一起学Android之Activity
概述 本文以一个简单的小例子,简述Android开发中Activity的相关知识,仅供学习分享使用. 什么是Activity? Activity是一个应用程序组件,通常显示为一个页面,用户可以通过Ac ...