如何在Eclipse中将我的文件夹正确添加到类路径中?

时间:2014-01-26 07:40:07

标签: java eclipse classpath

所以我试图简单地添加一个资源文件夹,我必须使用getClass()。getResource(...)来加载我的应用程序。

我已经尝试过所有事情,但我似乎无法让它发挥作用。

根据下面的布局,我想要做的是从 ViewManager 类中加载 scenes-fxml 文件夹中的资源,逻辑上我应该能够与...相关:

getClass().getResource("/scenes-fxml/MainScreen.fxml");

然而,它不起作用。我已经尝试在运行时将文件夹添加到Eclipse类路径中(...感觉奇怪,因为它应该在项目文件夹的上下文中捕获,默认情况下已经存在于eclipse中)。 / p>

我也尝试将文件夹更改为源文件夹,但没有帮助。还有什么我可以做的吗?

这是我的项目布局:http://i.imgur.com/ujUrejl.png

2 个答案:

答案 0 :(得分:1)

getResource()找不到项目中不在类路径中的所有文件夹(不是eclipse中的源文件夹)。

修改

所以你必须将“scenes-fxml”复制到src文件夹中才能使用“/scenes-fxml/MainScreen.fxml”。  路径中的前导斜杠告诉资源加载器从所有类路径文件夹的根目录(此处为src文件夹)进行搜索。作为替代方案,您可以将“scenes-fxml”标记为源文件夹,以便将其添加到类路径中并使用“/MainScreen.fxml”来查找它。

您也可以使用相对路径来搜索资源。然后你需要一个相对于调用getResource()...

的类的路径

这是java doc(IMO有点复杂) http://download.java.net/jdk8/docs/technotes/guides/lang/resources.html

答案 1 :(得分:0)

实际上很简单。假设scenes-fxml被标记为源文件夹。因此,直接位于此文件夹下的所有内容都位于根目录中。就像在src下直接使用.java文件一样,此.java文件中定义的类将位于默认包中。

因此,将scenes-fxml标记为源文件夹,然后使用

getClass().getResource("/MainScreen.fxml");

如果您想使用路径/scenes-fxml/MainScreen.fxml,那么MainScreen.fxml必须位于“包”scenes-fxml中,因此您需要一个名为scenes-fxml 的文件夹(而不是 as )您的一个源文件夹。但是,您不应该使用-字符,因为它会使您的包名无效。