maven项目中无法通过getClassLoader()获得所在包里面的文件流的解决方法

今天遇到了一个问题,在纯Java项目中
InputStream is = this.getClass().getClassLoader().getResourceAsStream("stopword.dic");
stopword.dic这个文件放在所在类的包中,能获取这个输入流。
可是在maven项目中,输入流却是为null的。这个问题百思不得其解。
不要getClassLoader()这个方法,就是在项目编译后的文件夹里面寻找文件,所以在maven项目中可以改为:

InputStream is = this.getClass().getResourceAsStream("/conf/stopword.dic");
注意前面要加斜杠“/”,这样还是提示为空!手动把文件放到编译后的项目中,运行,就不为空了,可是手动终究不好。

为了能自动加入到class环境中,在Spring配置文件中加入:

<context:property-placeholder location="classpath:/conf/stopword.dic"/>

不能自动加载!重新点击maven面板中的“install”。文件就会加载到class环境中了,再次运行,就不会出错了!
可是install的时候,会提示测试文件出错了。我的测试文件是mongodb和Spring的结合,以前测试都能插入数据,没什么问题,单独再测试,还是有问题。
配置文件读取不进去,提示${db.host}出错。最后把测试文件都注释了,再“install”,恢复测试文件,再次测试,又成功了!
看来这其中还是有点奥妙的。先前我有加载过一个mongodb2.properties文件,内容和mongodb.properties一模一样的,难道是有冲突,连直接删除都不能解决问题。
还要再“install”刷新才可以。又或者是配置文件加载的顺序问题,不过这个可能性比较低。看来只能把刚刚自己做的乱七八糟的步骤再重演一遍才能找到问题所在。当我复制多一个
mongodb2.properties文件后,再重新测试一遍,居然还是测试通过!看来问题可能不是这个,留到明天再看看吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值