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

坚果壳不是硬壳 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();
}

报错文件获取不到
...全文
269 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
致知Fighting 2014-02-26
  • 打赏
  • 举报
回复
同一个路径下,其他文件都可以获取到,单单jdbc.properties这个文件获取不到... 进入到编译后的bin目录里确认有没有这个文件 改个文件名试试
teemai 2014-02-26
  • 打赏
  • 举报
回复
引用 13 楼 u012895467 的回复:
[quote=引用 12 楼 huxiweng 的回复:] http://www.cnblogs.com/allenzhaox/p/3215776.html
这个我自己也搜到过 我就是想不通,为什么同一个路径下,其他文件都可以获取到,单单jdbc.properties这个文件获取不到... [/quote] 卧槽,这么奇怪。文件名有隐藏吗?我的意思jdbc.properties后面会不会有隐藏的后缀。还有你用这个文件的绝对路劲用File 判断下试试
  • 打赏
  • 举报
回复
引用 12 楼 huxiweng 的回复:
http://www.cnblogs.com/allenzhaox/p/3215776.html
这个我自己也搜到过 我就是想不通,为什么同一个路径下,其他文件都可以获取到,单单jdbc.properties这个文件获取不到...
  • 打赏
  • 举报
回复
引用 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的,我也重新编译过了,十分之郁闷
  • 打赏
  • 举报
回复
自己测试了下,很奇怪的问题,我把class文件夹删除,重新编译了一下,我的resource下还有mess.properties等国际化文件,但是请求mess.properties或者struts.xml都可以获取,唯独jdbc.properties获取不到,返回值是null 真的很郁闷
teemai 2014-02-26
  • 打赏
  • 举报
回复
用classLoader获取
  • 打赏
  • 举报
回复
引用 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") 也一样
tony4geek 2014-02-26
  • 打赏
  • 举报
回复
pxl_1012 2014-02-26
  • 打赏
  • 举报
回复
InputStream in = Object.class.getResourceAsStream("jdbc.properties") 这样试试呢?应该是路径问题。
致知Fighting 2014-02-26
  • 打赏
  • 举报
回复
http://ygydaiaq-gmail-com.iteye.com/blog/1985285 看看吧
Defonds 2014-02-26
  • 打赏
  • 举报
回复
看着像路径的问题
  • 打赏
  • 举报
回复
引用 2 楼 defonds 的回复:
Object 换成调用的类试试
System.out.println(Constants.class.getResourceAsStream("/jdbc.properties")); 测试了下,输出还是空,Constants是我用来存放全局变量的类
  • 打赏
  • 举报
回复
引用 22 楼 ygycomon 的回复:
我觉得跟重名冲突有关,jdbc.properties怎么看都觉得这个名字很眼熟,好像是哪个框架也在用的,都是猜测我也说不清楚怎么回事,你debug从源码里找找原因呗
做个标记以后有时间研究,谢了!
致知Fighting 2014-02-26
  • 打赏
  • 举报
回复
我觉得跟重名冲突有关,jdbc.properties怎么看都觉得这个名字很眼熟,好像是哪个框架也在用的,都是猜测我也说不清楚怎么回事,你debug从源码里找找原因呗
  • 打赏
  • 举报
回复
引用 19 楼 ygycomon 的回复:
有可能是其他的classpath下的同名文件产生了冲突或者之类的问题,你改个名字应该就没问题了
真的改个名字就可以找到了,但是整个项目文件夹就没有同名文件啊,这是什么原理
  • 打赏
  • 举报
回复
这是一个ssh项目,jdbc.properties配置spring也都正常运行啊,为什么单独访问不到,神奇的是只有它访问不到
致知Fighting 2014-02-26
  • 打赏
  • 举报
回复
有可能是其他的classpath下的同名文件产生了冲突或者之类的问题,你改个名字应该就没问题了
致知Fighting 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文件夹删掉重新编译了
加载更多回复(3)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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