我的问题是,当我使用intellij 13.1.1构建一个jar并将图像包含在jar中时,图像的路径会被破坏。 我得到一个nullpointerexception。 当我在jar外部添加资源文件夹并链接路径时,您可以在代码示例中看到它的工作原理。但我的目标是将resources文件夹包含在jar文件中,这样我只有一个文件。 我跑ubuntu。
我的项目结构:
res -> images -> button.gif
src -> programm -> mainclass.java
码
image = Toolkit.getDefaultToolkit().createImage("res/images/animation.gif");
this.setContentPane(new JLabel(new ImageIcon( image)));
答案 0 :(得分:1)
如果要从导出的.jar文件中加载资源,则不能像在jar外部那样静态引用它们的位置。根据gif的路径使用以下任何一个:
final String internalImagePath = "res/images/animation.gif";
//example one
Toolkit.getDefaultToolkit().createImage(this.getClass().getClassLoader().getResource(internalImagePath));
//example two
Toolkit.getDefaultToolkit().createImage(MainClass.class.getResource(internalImagePath));
如果图像是相对于包含此代码的类,请使用第一个加载器示例。如果图像是相对于某个类而不是存在此代码的类,请使用第二个示例。
希望这会有所帮助。欢呼声。