我有一个基于桌面的maven项目,在很多地方,我正在从资源文件夹加载图像,如下所示:
JLabel Footer = new JLabel(new ImageIcon(this.getClass().getClassLoader().getResource("Images/gloBOT_logo.png")));
Images
文件夹位于src/main/resources
此代码在eclipse IDE中运行得非常好,但是当我运行我的可执行jar时,我得到NullPointerException
,因为它无法加载图像。
任何人都可以建议我如何在Eclipse IDE中从资源文件夹加载图像,它也应该由可执行jar工作?
答案 0 :(得分:0)
您可以尝试在网址前添加/
。
ImageIcon(this.getClass().getClassLoader().getResource("/Images/gloBOT_logo.png")));
答案 1 :(得分:0)
显然,名称区分大小写,您可能希望在开头添加/。如果仍然无法正常工作,请确保该文件位于正确的位置(我认为它应该是project / build / classes / Images / *)
答案 2 :(得分:0)
你能做的就是使用这样的东西:
ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
BufferedImage buffLogo = null;
try {
buffLogo = ImageIO.read( currentClassLoader.getResourceAsStream( "src/main/resources/Images/gloBOT_logo.png" ) );
}catch ( IOException ex ) {
//exception catching and handling goes here.
}
JLabel Footer = new JLabel( new ImageIcon( buffLogo ) );
使用Class和ClassLoader加载资源之间存在很大差异,我不太清楚如何解释它,但我希望这会有所帮助。