簡體   English   中英

Java中的相對路徑不正確

[英]Incorrect relative path in java

我的問題在此處的代碼中(出於調試目的而分離):

// 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添加到場景中,該場景將作為彈出窗口添加到舞台上)

錯誤信息:

由以下原因引起的:controller.WorldNoteOrganizerMainController.handleNewUniverse(WorldNoteOrganizerMainController.java:169)上的java.lang.NullPointerException

此錯誤指向以下行:

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

層次結構快照:

在此處輸入圖片說明

您需要找出您的應用程序所在的文件夾,運行時間以及查找方式。 使用this.getClass().getResource() ,查找是相對於類文件本身的位置而言的,如果路徑以“ /”以外的其他內容開頭,則當路徑以“ /”開頭時,則假定為“絕對”路徑,它將開始於類路徑的“頂部”(在Eclipse中應為“目標”文件夾)。 所以-在您的情況下,您可能需要使用“ /css/main.css”(因為src / main / resources / *將被復制到target /)-如下所述,“相對路徑”不會使在這里感覺。

使用相對路徑時,請使用以下命令:

aClass.getClassLoader().getResource("relative-path");

如果使用的是Intellij,則可以通過右鍵單擊文件來選擇相對路徑。

當您在Inillj IDEA中將資源文件夾指定為資源文件夾(黃色小圖標)時,然后調用getClass().getResources()Inillj IDEA您進入資源目錄本身,因此只需使用getClass().getResources("css/main.css")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM