我试图通过使用相对路径在我的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
答案 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情况下 - 从根目录