[英]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.