IntelliJ IDEA中Java项目中的相对资源路径

时间:2017-01-14 16:58:25

标签: java intellij-idea

我试图通过使用相对路径在我的GUI中显示一个图标,如在"显示来自resources/image.png"的图像。我已经尝试了一百万种不同的表达方式,但没有任何作用。这让我觉得我的IntelliJ IDEA设置或项目结构存在问题。我已经设置了"资源"将文件夹作为"资源文件夹"。我不知道还希望我做什么。

如何使用IntelliJ IDEA中的Java项目中的相对路径从文件加载图标?

我的项目结构:

src/main/java/ <-- set as "sources" in IntelliJ
src/main/java/ui/ <-- contains classes for my GUI
src/main/resources/ <-- set as "resources" in IntelliJ. Contains images.

编辑:能够使用相对路径确认找到该文件,无法将其作为图标加载。

String path = "src/main/resources/image.png";
System.out.println(new File(path).exists()); <-- true

2 个答案:

答案 0 :(得分:1)

我多次遇到此问题,对我有用的是使用InputStream

InputStream is = Main.class.getClassLoader().getResourceAsStream("name_of_file.png");

使用InputStream将允许您从各种文件类型中读取。现在加载你可以做的图标

Icon icon = new ImageIcon(ImageIO.read(is));

答案 1 :(得分:0)

资源在classpath上,而不在文件系统路径上 - 这是从运行目录获取的,当你从idea运行它时,它是项目目录。通常您将应用程序分发为jar,这样最好从类路径加载资源。在zour情况下 - 从根目录