【发布时间】:2015-08-11 07:45:16
【问题描述】:
好的。所以我已经尝试了几个小时知道,而且我知道有很多关于这个主题的主题,例如this 线程。但是我已经尝试了该线程和其他一些线程中建议的所有内容,但没有成功。
我的项目层次结构(和包层次结构)如下所示: myProject/src/com/company/app/view
我试图链接到项目中另一个文件的类位于最后一个目录“view”中。
我试图链接的文件被放置在 “myProject/src/com/company/app/”并命名为“stylesheet.css”。
如果我执行System.out.println(new java.io.File("").getAbsolutePath());,我会得到以下路径:“C:\Users\xxxx\workspace\myProject”。这不应该意味着我应该从 myProject 指定一个绝对路径吗?在这种情况下,我的样式表的路径将是“src/com/company/app/stylesheet.css”,对吗?但是,这是行不通的。我还尝试在该 URL 的开头添加一个斜杠,但也没有用。
我正在尝试将样式表添加到班级中的 JavaFX DialogPane。像这样:
dialogPane.getStylesheets().add("stylesheet.css"); 我也试过这个:
dialogPane.getStylesheets().add(getClass().getResource("stylesheet.css").toExternalForm());
第一个版本永远不会工作,但如果我将 stylesheet.css 放在与我的班级相同的位置,第二个版本就可以工作。但是当我尝试在适当的位置找到样式表时,例如:
dialogPane.getStylesheets().add(getClass().getResource("src/com/company/app/stylesheet.css").toExternalForm());
我收到了NullPointerException。
如果我可以像在 HTML 中那样从父目录指定相对于类位置的路径,例如“../stylesheet.css”,那就是答案。不过好像不行。
我做错了什么?
【问题讨论】:
-
试过 dialogPane.getStylesheets().add(getClass().getResource("com/company/app/stylesheet.css").toExternalForm());?
-
啊!这实际上有效......谢谢!为什么不需要“src”部分?
-
java项目的根目录通常是src文件夹。这就是为什么通常包声明也以 com 开头的原因。我将添加此作为答案。请接受。
-
通常情况下,您的 IDE 将为您的源代码和编译代码创建独立的目录结构。 (Eclipse 默认为
src和bin,因此您可能会找到一个包含已编译代码和资源的bin文件夹。)当然,当您运行应用程序时,您是从编译后的代码而不是源代码运行的代码,所以你的工作目录是bin。它下面有一个结构,它或多或少反映了 undersrc的结构(不是直接在项目目录下)。
标签: java eclipse url javafx path