加粗样式初学Java,遇到一些问题
一、问题
1、环境:win11,java17 & java8
2、跟着教程学习java,在使用Toolkit.getDefaultToolkit().getImage(Panel.class.getResource())导入图片的时候,老师可以正常运行,我的代码运行时却报空指针。
在这里插入图片描述
bomb-1.gif,bomb-2.gif,bomb-3.gif放在out/production/chapter16下,与com平级。getResource()中资源名是带/的。类名是MyPanel,不是Panel,下面的代码中写的是Panel,老师就是这么写的。
项目结构
在这里插入图片描述
image1 = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bomb-1.gif"));
搞了半天,没有找到原因,烦死了。
二、原因
继续在网上查,终于找到一个相似的例子。
老师用的是java8,我用的是java17(切成java8就能正常运行)。从java9开始,定位资源的方式发生了变化。getResource()只会在调用该方法的module内定位资源。这是由于getResource()受getResourceAsStream()中规则的约束,这在之前的版本里是没有的。
三、解决办法
在Panel前加上My
image1 = Toolkit.getDefaultToolkit().getImage(MyPanel.class.getResource("/bomb_1.gif"));
这样就行了
运行成功