Java9以后getResource方法改动内容个人分析

今日在协助同学处理程序异常时,碰到getResource方法特殊问题,在本机Java8环境正常运行代码,移植到同学Java11环境上处理报NullPointException,代码如下

image1=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bomb_1.gif"));

image2=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bomb_2.gif"));

image3=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bomb_3.gif"));

开始以为是getDefaultToolkit方法返回的值有误,但检查代码未发现问题,进行debug后发现NullPointException来自getImage方法,原因是传入的路径为空,因此问题主要是由于getResource方法在Java8与Java11上的实现不同导致。

我们知道,getResource接受一个字符串参数,如果以”/”开头,就在classpath根目录下找(不会递归查找子目录),如果不以”/”开头,就在调用getResource的class文件所在目录下找(同样不会递归查找子目录),这些是在Java8中正常使用的内容,但在Java11中,该方法显著产生了区别。因此我远程控制同学电脑,通过对比源码确认与debug确认原因。

以下为Java11 getResource方法实现内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值