我的程序使用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
答案 0 :(得分:3)
以下是关于ImageIcon构造函数的the javadoc所说的内容:
从指定的文件创建ImageIcon。将使用MediaTracker预先加载图像以监控图像的加载状态。指定的字符串可以是文件名或文件路径。
(强调我的)
您的图片未存储在文件中。它不在您的文件系统中。它位于一个jar中,它本身就在classpath中。这就是你要加载它的地方。无论您的应用程序的jar文件位于最终用户的计算机上,您的程序都希望从此jar文件加载它。此jar文件中的所有资源都可以从ClassLoader获得。
所以你应该使用
new ImageIcon(MyClass.class.getResource("/res/background.jpg"))
或
new ImageIcon(MyClass.class.getClassLoader().getResource("res/background.jpg"))