2

我的程序使用 Image.class,它可以帮助我接收图像。

Image img = new ImageIcon("Shooter2D/res/background.jpg").getImage();

当程序从开发环境运行时 - 一切正常,编译 jar 文件后 - 不起作用。告诉我如何正确设置在 IDE (Intellij IDEA) 和存档中工作的路径。Shooter2D.jar 包含:

- META-INF
Manifest-Version: 1.0
Main-Class: Shooter2Dv22082013.Main
- res
all pictures
- Shooter2Dv22082013
all .class files, main is Main.class

指示图:http: //imageshack.us/photo/my-images/801/eyjv.png/

4

1 回答 1

3

以下是javadoc关于 ImageIcon 构造函数的说明:

从指定的文件创建一个 ImageIcon 。使用 MediaTracker 监控图像的加载状态,将预加载图像。指定的 String 可以是文件名文件路径

(强调我的)

您的图像未存储在文件中。它不在您的文件系统中。它在一个本身位于类路径中的 jar 中。这就是您要从中加载它的地方。无论您的应用程序的 jar 文件在最终用户的机器上的何处,您的程序都希望从该 jar 文件中加载它。这个 jar 文件中的所有资源都可以从 ClassLoader 获得。

所以你应该使用

new ImageIcon(MyClass.class.getResource("/res/background.jpg"))

或者

new ImageIcon(MyClass.class.getClassLoader().getResource("res/background.jpg"))
于 2013-08-22T12:02:37.963 回答