Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Getstylesheets在Javafx中给出了一个nullpointerexception,如何修复它?_Java_Css_Javafx - Fatal编程技术网

Getstylesheets在Javafx中给出了一个nullpointerexception,如何修复它?

Getstylesheets在Javafx中给出了一个nullpointerexception,如何修复它?,java,css,javafx,Java,Css,Javafx,我很清楚以前有人问过这个问题(好几次),但我已经回顾了我能找到的“解决方案”(,),似乎没有任何效果 下面是有问题的代码行: scene.getStylesheets().add(getClass().getResource("MainMenu.css").toExternalForm()); //this code gives a nullpointerexception 在我的其他项目中,这段代码运行良好,所以我不明白问题出在哪里。我能想到的唯一区别是这是在git存储库中 回答我看到的一些

我很清楚以前有人问过这个问题(好几次),但我已经回顾了我能找到的“解决方案”(,),似乎没有任何效果

下面是有问题的代码行:

scene.getStylesheets().add(getClass().getResource("MainMenu.css").toExternalForm()); //this code gives a nullpointerexception
在我的其他项目中,这段代码运行良好,所以我不明白问题出在哪里。我能想到的唯一区别是这是在git存储库中

回答我看到的一些问题:

是的,我已经初始化了场景,场景不是问题所在,没有上面的代码行,程序运行正常

是的,我试过在名字前加反斜杠。它不起作用

是的,css文件与.java文件位于同一文件夹中

是的,我已经在.java文件的顶部包含了这个包

该文件完全命名为“MainMenu.css”,而不是“MainMenu.css.txt”或“MainMenu.css.css”

我一辈子都不明白问题出在哪里。是打字错误吗?我错过什么了吗?非常感谢您的帮助


如果有帮助的话,我正在通过VisualStudio代码将Java8与Maven一起使用

问题在于
getClass()
,它解析相对于类路径的资源

因此,
getClass().getResource(“main menu.css”)
只有在使用该指令的对象的类的包目录中时才会解析为正确的URL

因此,如果
MainMenu.css
MainMenuView
类位于同一个包(目录)中,只需使用
MainMenuView.getResource(“MainMenu.css”)
,否则您可以始终使用绝对路径,如

getClass().getResource(“/org/mycompany/myapp/view/main menu.css”)

更新 Maven也可能是您找不到资源文件的原因

Maven不会将
src/main/java
文件夹中的资源移动到target/classes文件夹中

它确实会移动
src/main/resources
文件夹中的资源

如果您有一个标准的maven布局,这可能会导致资源丢失

在这种情况下,您可以使用maven资源插件将这些资源包括在构建中

例如,在一个项目中,我不得不为构建添加这个插件配置


maven资源插件
2.7
复制fxml资源
验证
复制资源
${basedir}/target/classes/
src/main/java/
假的
**/*.fxml
**/*.css

我需要
src/main/java
文件夹中的资源,否则场景生成器将找不到它们。

css和类都位于彼此相同的包目录中。谢谢你的建议,但我两次都试了,但都没有解决问题。你把资源放在资源文件夹里了吗?检查目标/类别文件夹。是的,它不在那里。谢谢你的帮助。这很奇怪,因为maven resources插件应该自动复制文件,不是吗?如果文件在resources文件夹中,它会自动复制,但不在java文件夹中。这很奇怪,因为这在以前的项目中工作得很好。为什么现在不起作用?