【问题标题】:InvocativeTargetException while trying to find .css file尝试查找 .css 文件时出现 InvocativeTargetException
【发布时间】:2016-01-03 02:14:18
【问题描述】:

我已经尝试了大约五种不同的 StackOverFlow 解决方案,但都没有奏效。我有一个 CSS 文件,我试图通过调用将其应用于我的 GUI 应用程序:

scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());

我的文件系统如下:

我的项目

------- 源代码

-----------style.css

------------- 包1

--------------------- GUI.java //

------------- 包2

------- 垃圾箱

我已经尝试了很多解决方案。实际上,在它在 myProject/bin/ 中查找文件之前,我遇到了这个问题。这令人痛苦地沮丧。我不想严格定义位置,因为如果文件移动或转到另一台计算机,它将不再工作。

【问题讨论】:

  • 确切的例外是什么。请添加堆栈跟踪。
  • 应用程序启动方法 java.lang.reflect.InvocationTargetException 中的异常原因:application.GUI.start(GUI.java:224) 处的 java.lang.NullPointerException
  • 始终在您的问题中包含堆栈跟踪(而不是在 cmets 中)。我假设第 224 行是您发布的行...?

标签: java css file javafx


【解决方案1】:

假设一切都正确部署,所以你在 bin 文件夹中看到 style.css,你应该可以做到

scene.getStylesheets().add(getClass().getResource("/style.css").toExternalForm());

(注意前导斜杠,/),或

scene.getStylesheets().add(getClass().getClassLoader().getResource("style.css").toExternalForm());

【讨论】:

  • 如何正确地将文本文件资源部署到我的程序中?目前我的 bin/ 文件夹中没有 style.css 的迹象。
  • 取决于您的 IDE。你在用什么?
  • 日食。我改变了一些东西,并认为最好有一个 res 文件夹,因为我以前看过它建议。这是我当前的文件系统:i.imgur.com/lrWFL4o.png
  • 转到菜单上的项目,然后是属性和 Java 构建路径。选择“来源”选项卡。您需要源文件夹下列出的 res 文件夹,并使用包含/排除规则确保部署所需的所有内容。
  • 完成:i.imgur.com/Ni0Oc0W.png。但是scene.getStylesheets().add(getClass().getResource("/res/style.css").toExternalForm());场景也是非空对象,所以不是外部问题。
【解决方案2】:

这应该可行,

getClass().getClassLoader().getResource("style.css").toExternalForm()

您也可以将文件放在一个包中,如下所示

getClass().getClassLoader().getResource("styles/style.css").toExternalForm()

其中styles 是包名。

我怀疑您使用的是 Eclipse IDE。清理/bin 文件夹中的所有内容,然后重新构建您的项目(菜单项目>清理,项目>构建全部或项目>构建项目)。

这会将编译的类和资源文件(属性、css 和所有)放在bin 目录中。

注意:记住getClassLoader() 部分很重要。如果没有使用它并且直接在类上调用getResource(),那么您的资源文件将被查看到您的类文件的相对路径。因此,如果您的类文件在 foo.bar 包中,则遵循以下行

getClass().getResource("style.css").toExternalForm()

会在foo/bar 文件夹中查找您不想要的文件。为避免混淆,请始终使用来自根目录的路径并调用 getResource()ClassLoader

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2015-01-20
    • 2017-11-05
    • 1970-01-01
    • 2023-02-09
    • 2013-06-12
    • 2021-10-25
    相关资源
    最近更新 更多