求助:资源文件获取不了!

坚果壳不是硬壳 2014-02-25 04:50:20
我的项目结构是有两个Source文件夹,src和resource,resource文件夹用于存放一些资源或者配置文件,我的jdbc.properties就放在resource下,但是总是无法获取到,求助!!!

下面是我目前的代码:
Properties prop = new Properties();  

try {
InputStream in = Object.class.getResourceAsStream("/resource.properties");
prop.load(in);

System.out.println(prop.getProperty("db.driver.class"));
System.out.println(prop.getProperty("db.url"));
System.out.println(prop.getProperty("db.username"));
} catch(IOException e) {
e.printStackTrace();
}

报错文件获取不到
...全文
224 点赞 收藏 23
写回复
23 条回复
须等待 2014年02月26日
同一个路径下,其他文件都可以获取到,单单jdbc.properties这个文件获取不到... 进入到编译后的bin目录里确认有没有这个文件 改个文件名试试
回复 点赞
ohfiner 2014年02月26日
引用 13 楼 u012895467 的回复:
[quote=引用 12 楼 huxiweng 的回复:] http://www.cnblogs.com/allenzhaox/p/3215776.html
这个我自己也搜到过 我就是想不通,为什么同一个路径下,其他文件都可以获取到,单单jdbc.properties这个文件获取不到... [/quote] 卧槽,这么奇怪。文件名有隐藏吗?我的意思jdbc.properties后面会不会有隐藏的后缀。还有你用这个文件的绝对路劲用File 判断下试试
回复 点赞
坚果壳不是硬壳 2014年02月26日
引用 12 楼 huxiweng 的回复:
http://www.cnblogs.com/allenzhaox/p/3215776.html
这个我自己也搜到过 我就是想不通,为什么同一个路径下,其他文件都可以获取到,单单jdbc.properties这个文件获取不到...
回复 点赞
坚果壳不是硬壳 2014年02月26日
引用 9 楼 huxiweng 的回复:
用classLoader获取
麻烦看下我的上条回帖 System.out.println(Constants.class.getClassLoader().getResource("struts.xml")); 或是 System.out.println(Constants.class.getClassLoader().getResource("mess.properties")); 都是可以输出路径的,唯独jdbc.properties输出是null, class文件夹下面是有jdbc.properties的,我也重新编译过了,十分之郁闷
回复 点赞
坚果壳不是硬壳 2014年02月26日
自己测试了下,很奇怪的问题,我把class文件夹删除,重新编译了一下,我的resource下还有mess.properties等国际化文件,但是请求mess.properties或者struts.xml都可以获取,唯独jdbc.properties获取不到,返回值是null 真的很郁闷
回复 点赞
ohfiner 2014年02月26日
用classLoader获取
回复 点赞
坚果壳不是硬壳 2014年02月26日
引用 4 楼 defonds 的回复:
看着像路径的问题
引用 5 楼 ygycomon 的回复:
http://ygydaiaq-gmail-com.iteye.com/blog/1985285 看看吧
引用 6 楼 pxl_1012 的回复:
InputStream in = Object.class.getResourceAsStream("jdbc.properties") 这样试试呢?应该是路径问题。
引用 7 楼 rui888 的回复:
路径问题。
应该就是路径问题,但是测试了几个路径输出方法,包括System.getProperty("user.dir"),测试可以输出项目路径,但是测试类似System.getProperty("user.dir") + "resource/jdbc.properties",结果都是null InputStream in = Object.class.getResourceAsStream("jdbc.properties") 也一样
回复 点赞
兔子托尼啊 2014年02月26日
回复 点赞
pxl_1012 2014年02月26日
InputStream in = Object.class.getResourceAsStream("jdbc.properties") 这样试试呢?应该是路径问题。
回复 点赞
须等待 2014年02月26日
http://ygydaiaq-gmail-com.iteye.com/blog/1985285 看看吧
回复 点赞
Defonds 2014年02月26日
看着像路径的问题
回复 点赞
坚果壳不是硬壳 2014年02月26日
引用 2 楼 defonds 的回复:
Object 换成调用的类试试
System.out.println(Constants.class.getResourceAsStream("/jdbc.properties")); 测试了下,输出还是空,Constants是我用来存放全局变量的类
回复 点赞
坚果壳不是硬壳 2014年02月26日
引用 22 楼 ygycomon 的回复:
我觉得跟重名冲突有关,jdbc.properties怎么看都觉得这个名字很眼熟,好像是哪个框架也在用的,都是猜测我也说不清楚怎么回事,你debug从源码里找找原因呗
做个标记以后有时间研究,谢了!
回复 点赞
须等待 2014年02月26日
我觉得跟重名冲突有关,jdbc.properties怎么看都觉得这个名字很眼熟,好像是哪个框架也在用的,都是猜测我也说不清楚怎么回事,你debug从源码里找找原因呗
回复 点赞
坚果壳不是硬壳 2014年02月26日
引用 19 楼 ygycomon 的回复:
有可能是其他的classpath下的同名文件产生了冲突或者之类的问题,你改个名字应该就没问题了
真的改个名字就可以找到了,但是整个项目文件夹就没有同名文件啊,这是什么原理
回复 点赞
坚果壳不是硬壳 2014年02月26日
这是一个ssh项目,jdbc.properties配置spring也都正常运行啊,为什么单独访问不到,神奇的是只有它访问不到
回复 点赞
须等待 2014年02月26日
有可能是其他的classpath下的同名文件产生了冲突或者之类的问题,你改个名字应该就没问题了
回复 点赞
须等待 2014年02月26日
改名字呢? 。
回复 点赞
坚果壳不是硬壳 2014年02月26日
引用 14 楼 huxiweng 的回复:
[quote=引用 13 楼 u012895467 的回复:] [quote=引用 12 楼 huxiweng 的回复:] http://www.cnblogs.com/allenzhaox/p/3215776.html
这个我自己也搜到过 我就是想不通,为什么同一个路径下,其他文件都可以获取到,单单jdbc.properties这个文件获取不到... [/quote] 卧槽,这么奇怪。文件名有隐藏吗?我的意思jdbc.properties后面会不会有隐藏的后缀。还有你用这个文件的绝对路劲用File 判断下试试[/quote] 卧槽不行 System.out.println(readFile("D:/workspace/我的项目名/build/classes/mess.properties"));就可以输出内容 System.out.println(readFile("D:/workspace/我的项目名/build/classes/jdbc.properties")); 就找不到指定的文件 我都已经把整个class文件夹删掉重新编译了
回复 点赞
发动态
发帖子
Web 开发
创建于2007-09-28

5.2w+

社区成员

34.1w+

社区内容

Java Web 开发
社区公告
暂无公告