[英]Exporting Eclipse Project to Runnable Jar
因此,我在互聯網上閱讀了如何將項目提取到Runnable Jar文件中。
我已經能夠很好地提取它們,但是當我嘗試運行它時,它什么也沒做。
當我在命令提示符下運行它時
java -jar ModdingForScrubs.jar
,我得到以下輸出:
它指向的特定行是:
int numOfBackgrounds = new File("resources/background").listFiles().length;
它產生一個空指針異常。 當我在Eclipse中運行項目時,一切都很好。
當我將其導出到jar中時,它會得到NPE,我認為這是由於找不到文件這一事實造成的。
這是我的項目工作區:
任何幫助,將不勝感激。
要考慮的事情。
使用時,你不應該使用硬編碼值, File
。 一旦應用程序被“震撼”, 文件系統位置將不再與從IDE中運行時的位置相同。
如果要讀取jar資源,則應使用getClass().getResource("...")
或其變體之一通過URL將其讀取為資源。
而且看起來(使用您正在使用“ resources / background”的路徑),“ resource”與src
處於同一級別,並且不包含在jar的構建路徑中。 如果您提取罐子,我很確定文件將不存在。
您應該將“資源”放在“ src”中,這樣它會自動放入構建路徑中。 您可以將其保留在原處,並配置構建以添加它,但這將花費更長的時間。 因此,只需將其放在“ src”中即可。 因此,您將擁有一個類似的文件結構
ProjectRoot
src
resources
beackground
問題仍然是嘗試讀取File
的路徑,該路徑將使用相對於硬編碼的路徑在文件系統上使用來搜索文件。 那行不通。 如我所說,應該從URL讀取。 因此,您可以執行以下操作:
URL url = TestFiles.class.getResource("/resources/background");
URI uri = url.toURI();
File file = new File(uri);
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
這應該工作。 因此,只需確保在構建之后,文件實際上就存在於jar中,然后獲取所需目錄的url,然后可以從URI創建File
Class
API 。 它找不到資源/后台文件夾。 這是因為resources文件夾不在您的src文件夾中,因此在打包Jar文件時,資源文件夾不在其中-您可以打開Jar文件並看到它。
因此,我認為您應該將resources文件夾移至src文件夾中,然后對其進行訪問-現在應該將其與Jar文件一起導出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.