簡體   English   中英

將Eclipse項目導出到Runnable Jar

[英]Exporting Eclipse Project to Runnable Jar

因此,我在互聯網上閱讀了如何將項目提取到Runnable Jar文件中。

我已經能夠很好地提取它們,但是當我嘗試運行它時,它什么也沒做。

當我在命令提示符下運行它時

java -jar ModdingForScrubs.jar

,我得到以下輸出:

http://imgur.com/FOJKPma

它指向的特定行是:

int numOfBackgrounds = new File("resources/background").listFiles().length;

它產生一個空指針異常。 當我在Eclipse中運行項目時,一切都很好。

當我將其導出到jar中時,它會得到NPE,我認為這是由於找不到文件這一事實造成的。

這是我的項目工作區:

http://imgur.com/034pBW8

任何幫助,將不勝感激。

要考慮的事情。

  1. 使用時,你應該使用硬編碼值, File 一旦應用程序被“震撼”, 文件系統位置將不再與從IDE中運行時的位置相同。

  2. 如果要讀取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.

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