java - java中的相对路径不正确

标签 java javafx intellij-14

我的问题在此处的代码中(为了调试目的而分开):

// 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");

层次结构快照:

enter image description here

最佳答案

您需要找出您的应用程序所在的文件夹、它的运行时间以及如何查找它。使用 this.getClass().getResource() 查找是相对于类文件本身的位置,如果路径以“/”以外的任何内容开头,当路径以“/”开头时,它被假定为“绝对”路径,并且将从类路径的“顶部”开始(在 Eclipse 中应该是“目标”文件夹)。因此 - 在您的情况下,您可能需要使用“/css/main.css”(因为 src/main/resources/* 将被复制到 target/) - 并且如下所述,“相对路径”不会使感觉这里。

关于java - java中的相对路径不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51793377/

相关文章:

java - 如何使用 SAAJ 将 CDATA 部分添加到 SOAPMessage?

java - 以模块化方式添加命名空间属性

JavaFX 从另一个线程更新 AnchorPane

java - 在 javafx 中首先控制获取焦点

intellij-idea - intellij idea中的 "working set"等价物是什么?

Java 选择递归函数

java - 如何使用协调器布局将 View 折叠到屏幕底部?

java - 如何在JAVA中解决SQL "Unknown column ' c' in 'field list' "而实际上没有语法问题

intellij-idea - 在 PyCharm 中重命名项目根目录会产生 java.io.IOException

java - 如何从 Intellij IDEA 中删除指向旧/缺失源的(幻影)断点?