我的问题在此处的代码中(出于调试目的而分离):
// 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添加到将作为弹出窗口添加到舞台的场景中)
错误消息:
由以下原因引起:java.lang.NullPointerException 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");
层次结构快照:
答案 0 :(得分:2)
您需要确定您的应用程序位于哪个文件夹,何时运行以及如何查找。使用this.getClass().getResource()
,查找是相对于类文件本身的位置而言的,如果路径以“ /”以外的任何其他开头,则当路径以“ /”开头时,则假定为“绝对”路径,它将开始于类路径的“顶部”(在Eclipse中应为“目标”文件夹)。所以-在您的情况下,您可能需要使用“ /css/main.css”(因为src / main / resources / *将被复制到target /)-如下所述,“相对路径”不会使在这里有意义。
答案 1 :(得分:1)
使用相对路径时,请使用以下路径:
CREATE TABLE [dbo].[UserInfo]
(
[UserId] int NOT NULL IDENTITY (1, 1),
[strEmail] varchar(100) NOT NULL,
[strLastName] varchar(50) NOT NULL DEFAULT 'N/A',
[strFirstName] varchar(50) NOT NULL DEFAULT 'N/A',
[strMiddleInitial] varchar(5) NOT NULL DEFAULT 'N/A',
[strDSNPhone] varchar(10) NOT NULL DEFAULT 'N/A',
[dCreationDate] date NOT NULL DEFAULT '1900-1-1',
[dDD2875Approved] date NOT NULL DEFAULT '1900-1-1',
[dDD2875Expires] date NOT NULL DEFAULT '1900-1-1',
)
CREATE TABLE [dbo].[Files]
(
[FileID] bigint NOT NULL IDENTITY (1, 1),
[strFileName] varchar(200) NULL,
[strFilePath] varchar(400) NULL,
[strFileDescription] varchar(200) NULL,
[UserId] int NOT NULL,
[strEmail] varchar(100) NOT NULL
)
ALTER TABLE [dbo].[Files]
ADD CONSTRAINT [PK_Files]
PRIMARY KEY CLUSTERED ([FileID] ASC)
ALTER TABLE [dbo].[UserInfo]
ADD CONSTRAINT [PK_UserInfo]
PRIMARY KEY CLUSTERED ([UserId] ASC, [strEmail] ASC)
ALTER TABLE [dbo].[Files]
ADD CONSTRAINT [FK_Files_UserInfo]
FOREIGN KEY ([UserId],[strEmail]) REFERENCES [dbo].[UserInfo]([strEmail],[UserId])
ON DELETE No Action ON UPDATE No Action
如果您使用的是Intellij,则可以通过右键单击文件来选择相对路径。
答案 2 :(得分:1)
当您将资源文件夹指定为Inillj IDEA
(黄色小图标)中的资源文件夹,然后调用getClass().getResources()
时,它将进入资源目录本身,因此您只需使用getClass().getResources("css/main.css")
< / p>