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

Java 如何在Eclipse中将文件夹正确添加到类路径?,java,eclipse,classpath,Java,Eclipse,Classpath,因此,我试图简单地添加一个文件夹,其中包含必须使用getClass()加载到应用程序中的资源。getResource(…) 我几乎什么都试过了,但似乎都没用 根据下面的布局,我要做的是从ViewManager类的scenes fxml文件夹中加载资源,从逻辑上讲,我应该能够使用该类: getClass().getResource("/scenes-fxml/MainScreen.fxml"); 但是,它不起作用。我已经尝试在运行时将文件夹添加到Eclipse类路径中(…这感觉很奇怪,因为它应该

因此,我试图简单地添加一个文件夹,其中包含必须使用getClass()加载到应用程序中的资源。getResource(…)

我几乎什么都试过了,但似乎都没用

根据下面的布局,我要做的是从ViewManager类的scenes fxml文件夹中加载资源,从逻辑上讲,我应该能够使用该类:

getClass().getResource("/scenes-fxml/MainScreen.fxml");
但是,它不起作用。我已经尝试在运行时将文件夹添加到Eclipse类路径中(…这感觉很奇怪,因为它应该在项目文件夹的上下文中捕获,在Eclipse中默认情况下已经存在)

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


这是我的项目布局:

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

因此,将
场景fxml
标记为源文件夹,并使用

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

如果要使用路径
/scenes fxml/MainScreen.fxml
,则MainScreen.fxml必须位于“package”
scenes fxml
,因此您需要一个名为
scenes fxml
的文件夹,而不是作为源文件夹之一。但是,您不应该使用
-
字符,因为这会使包名无效。

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

编辑:

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

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

这是java文档(我觉得有点复杂)

前面的斜杠并不是你认为的意思。“项目”在运行时不再存在。项目是一个eclipse概念,而不是Java概念。我认为,如果问题与之相关,那么在eclipse上下文中解释resource/folder/classpath内容会更容易。java运行时不知道eclipse项目本身,但eclipse将项目源文件夹结构映射到输出文件夹/jar/classpath,如前所述。无论如何,我更正了我的答案…将资源文件夹添加到类路径最终解决了它。如果我能帮忙的话,我想我宁愿避免将非源文件夹添加到源文件夹:)