NetBeans 中classpath没法找到资源文件

2 篇文章 0 订阅

有个非常简单的需求,就是写一个Java类,并且实现读取properties资源文件。

  

加载资源的方式为使用了java.util.ResourceBundle 这个类。

  

为了测试方便,一开始把properties文件和Java文件放在了同一个目录下面。看下图:

  

  

  

资源文件和类名完全一样。

  

  

接下来贴代码:

  

  

  

  

  

直接把ResourceBundle对象定义为一个静态变量,在类被加载的时候就自动实例化。ResourceBundle 加载资源文件的方式比较特殊,看起来就像加载一个类一样。

  

上面这段代码报错了,说找不到这个资源文件。

  

DEBUG之后我怀疑是在类加载路劲中找不到这个properties文件。然后我就研究了下,发现NetBeansmaven项目中的Java代码编译和执行方式比较特殊,是通过调用maven插件的形式完成的。当然这个特性主要出现在最近的几个版本中。

  

然后我就去类编译后的路径中去查看,发现果然找不到资源文件(编译后文件在 target/classes 目录下),见下图:

  

  

为了再确认一遍,再次写一段代码进行测试:

  

  

  

  

发现,通过classloader去查找该文件的时候,没法找到,所有URL为NULL。基本上确认就是我猜测的问题。

  

  

因此,我就严格按照maven的约定,把资源文件放在resources目录中,同时包路径和代码的路径对应一致:

  

  

  

  

再执行一遍,果然没问题,同时在编译的class文件中能够找到这个文件:

  

  

  

  备注:每次有变动之后,重新执行自己的代码之前,为了防止出错,最好清空target目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值