相对路径不起作用

Relative path does not work

我正在尝试用 JavaFX 重建俄罗斯方块。 我的项目名为 TetrisProject (C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject)

Main 内部获取资源时出现问题。 (C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject\tetris\src\be\kdg\tetris\Main.java)

public class Main extends Application {
    primaryStage.getIcons().add(new Image("tetris\resources\images\icon.png")
}

icon.png 是我要为我的 windows 设置的图标。 (C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject\tetris\resources\images\icon.png)

tetris\resources\images\icon.png 应该是相对路径,因为

File f = new File(".");
System.out.println(f.getAbsolutePath());

运行 inside Main.java 输出 C:\Users\Matthias\IdeaProjects\OOPROG\TetrisProject\.

我给icon.png写的相对路径是对的吧?

该路径不是文件路径,它是资源的 URL。

documentation 表示 "If the passed string is not a valid URL, but a path instead, the Image is searched on the classpath in that case." 大概 resources 是一个源文件夹,所以路径只需 images/icon.png:

primaryStage.getIcons().add(new Image("images/icon.png"));

您可以通过查看 output/build/bin 文件夹中的内容(无论您的 IDE 怎么称呼它)来进行检查。根据您的 IDE 配置来处理资源目录的方式,应该将图像复制到那里,这就是 Image 构造函数在运行时查看的位置。 (显然,您的源文件夹通常在运行时无法访问。)