java中的绝对/相对路径(jar,ide)



我的程序使用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/

以下是javadoc对ImageIcon:构造函数的描述

从指定的文件创建ImageIcon。图像将通过使用MediaTracker预加载,以监控图像的加载状态。指定的字符串可以是文件名或文件路径。

(重点矿井)

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

所以你应该使用

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

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

相关内容

最新更新