所以我试图简单地添加一个资源文件夹,我必须使用getClass()。getResource(...)来加载我的应用程序。
我已经尝试过所有事情,但我似乎无法让它发挥作用。
根据下面的布局,我想要做的是从 ViewManager 类中加载 scenes-fxml 文件夹中的资源,逻辑上我应该能够与...相关:
getClass().getResource("/scenes-fxml/MainScreen.fxml");
然而,它不起作用。我已经尝试在运行时将文件夹添加到Eclipse类路径中(...感觉奇怪,因为它应该在项目文件夹的上下文中捕获,默认情况下已经存在于eclipse中)。 / p>
我也尝试将文件夹更改为源文件夹,但没有帮助。还有什么我可以做的吗?
这是我的项目布局:http://i.imgur.com/ujUrejl.png
答案 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 )您的一个源文件夹。但是,您不应该使用-
字符,因为它会使您的包名无效。