我正在 Netbeans 中使用 Maven 創(chuàng)建一個(gè)聯(lián)系人應(yīng)用程序。對于程序的操作,我希望用戶在文件夾 /avatars 中添加和存儲(chǔ)圖像(聯(lián)系人頭像),并在偵聽器事件上訪問它們。我可以從 ProjectRoot/src/main/resources/images 目錄中訪問圖像,但無法訪問 ProjectRoot/avatars。注意:我不想將頭像存儲(chǔ)在資源目錄中,因?yàn)檫@些將是用戶在程序運(yùn)行時(shí)添加的。我試過使用 getClass().getResource(avatarPath); 正如在類似問題中所建議的那樣,但它沒有奏效。我還嘗試將“avatars”目錄作為它自己的資源目錄添加到 POM 中,但這也沒有奏效。使用Maven時(shí)如何訪問項(xiàng)目根目錄中的文件/文件夾?listviewContacts.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Contact>() { @Override public void changed(ObservableValue<? extends Contact> observable, Contact oldValue, Contact newValue) { String avatar = newValue.getAvatar(); String avatarPath = null; if (avatar.isEmpty()) { avatarPath = "/images/" + DEFAULT_AVATAR; // loads from ProjectRoot/src/main/resources/images } else { avatarPath = "/avatars/" + avatar; // won't load from ProjectRoot/avatars } try { imageviewContact.setImage(new Image(avatarPath)); } catch (IllegalArgumentException ex) { System.err.println("Could not locate " + avatarPath); } } });
2 回答

飲歌長嘯
TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
你正在混合兩種不同的東西。
您可以將類路徑資源與類一起打包在 jarfile 中,也可以將 java 顯式添加到 java 類路徑(使用 java -cp 命令行參數(shù))的目錄中??梢酝ㄟ^ getClass().getResource 訪問。
或者,您可以使用 java.io.File 從任意位置加載文件。然后你的“projectRoot”是文件系統(tǒng)中的某個(gè)文件夾,你可以硬編碼,通過 -DprojectRoot=C:/fun/with/files 配置,或者使用一些相對路徑。Maven 與它無關(guān),因?yàn)榛怼皩⒃诔绦蜻\(yùn)行期間由用戶添加”。
您的用戶不會(huì)啟動(dòng)您的 IDE,對嗎?
添加回答
舉報(bào)
0/150
提交
取消