我的问题在此处的代码中(为了调试目的而分开):
// creating newUniversePane
Scene newUniverseScene = new Scene(newUniversePane, 300, 200);
Class<? extends WorldNoteOrganizerMainController> aClass = getClass();
URL resource = aClass.getResource("../../resources/css/main.css");
String s = resource.toExternalForm();
newUniverseScene.getStylesheets().add(s);
//more code
所以,通过查看 Stack Overflow 上的许多示例,看来我的相对路径是正确的。但是,当我运行该程序并到达此代码时,它会给我一个错误。(我试图将 css 添加到场景中,该场景将作为弹出窗口添加到舞台中)
错误消息:
Caused by: java.lang.NullPointerException at controller.WorldNoteOrganizerMainController.handleNewUniverse(WorldNoteOrganizerMainController.java:169)
此错误指向以下行:
String s = resource.toExternalForm();
这是因为资源为空。我尝试了许多不同的路径来尝试获取该文件,但都没有成功。另外,我在这里环顾四周,这样我就不会重复问题,但我找不到任何有帮助的问题。我发现了相对类路径问题,但它们并没有帮助我解决这个问题。任何帮助将不胜感激!我在最后添加了相关信息。
实际的一行代码:
newUniverseScene.getStylesheets().add(getClass().getResource("/../../resources/css/main.css").toExternalForm();
尝试的路径:
URL resource = aClass.getResource("/../resources/css/main.css");
URL resource = aClass.getResource("/resources/css/main.css");
层次结构快照:
最佳答案
您需要找出您的应用程序所在的文件夹、它的运行时间以及如何查找它。使用 this.getClass().getResource() 查找是相对于类文件本身的位置,如果路径以“/”以外的任何内容开头,当路径以“/”开头时,它被假定为“绝对”路径,并且将从类路径的“顶部”开始(在 Eclipse 中应该是“目标”文件夹)。因此 - 在您的情况下,您可能需要使用“/css/main.css”(因为 src/main/resources/* 将被复制到 target/) - 并且如下所述,“相对路径”不会使感觉这里。
关于java - java中的相对路径不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51793377/