加載jar中包含的資源在我的應(yīng)用程序中,我以這種方式加載資源:WinProcessor.class.getResource("repository").toString();這給了我:file:/root/app/repository (and I replace "file:" with empty string)當(dāng)我從IDE運(yùn)行我的應(yīng)用程序時(shí),這工作正常,但是當(dāng)我運(yùn)行我的應(yīng)用程序的jar時(shí):java -jar app.jar路徑變成:jar:/root/app.jar!/repository有什么方法可以解決這個(gè)問(wèn)題嗎?我將使用“repository”目錄名稱(chēng)來(lái)創(chuàng)建:ConfigurationContext ctx = (ConfigurationContext) ConfigurationContextFactory.createConfigurationContextFromFileSystem(repositoryString, null);以同樣的方式,我將獲得一個(gè)文件名(而不是一個(gè)目錄),我將以這種方式使用它:System.setProperty("javax.net.ssl.trustStore", fileNameString)
3 回答

繁星coding
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
聽(tīng)起來(lái)你正在嘗試使用FileInputStream
類(lèi)似的東西來(lái)加載資源。不要這樣做:而不是呼叫getResource
,調(diào)用getResourceAsStream
和讀取數(shù)據(jù)。
(您可以從URL加載資源,但調(diào)用getResourceAsStream
更方便。)
編輯:看到你的更新答案后,似乎其他代碼依賴(lài)于文件系統(tǒng)中物理單個(gè)文件中的數(shù)據(jù)。因此,答案不是首先將其捆綁在jar文件中。你可以檢查它是否在一個(gè)單獨(dú)的文件中,如果沒(méi)有將它提取到一個(gè)臨時(shí)文件,但這是非常hacky IMO。

慕絲7291255
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
構(gòu)造一個(gè)URL
,然后可以使用該openStream
方法加載資源(甚至在jar文件中)。
添加回答
舉報(bào)
0/150
提交
取消