2016-12-29 19 views
0

所以我在從jar文件運行我的程序時加載文件時出現問題。我知道存在與此類似的問題,但我找不到適合自己的工作或做我需要的工作。我想加載從一個文件夾中的目標文件在我的罐子,但是當我這樣做,我得到了以下錯誤:從.jar加載文件時URI不是分層的

Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical 
     at java.io.File.<init>(Unknown Source) 
     at bbsource.BouncyBallV5.loadLevels(BouncyBallV5.java:370) 
     at bbsource.BouncyBallV5.<init>(BouncyBallV5.java:243) 
     at BBDriver.main(BBDriver.java:18) 

370行如下

initSource = new File(getClass().getResource("/resources/levels").toURI());

我沒有問題這條線從Eclipse運行時,但我知道事情在jar文件中的行爲不同。文件夾層次是:

  • SRC
    • 資源
      • 水平
        • tier_one
          • Level1.cbbl
          • Level2.cbbl
        • tier_two
          • Level1.cbbl

水平是,它不會讓我訪問的目錄,我不知道如何讓它工作。我曾見過如使用InputStream的建議,但我不確定如何使用它,並仍將其視爲可從中讀取對象的文件。

任何幫助,將不勝感激。

回答

3

這是因爲/resources/levels是一個不是文件的目錄。檢查this question

+0

的答案我用它作爲目錄來訪問它的子目錄,最終它是文件,但我需要類似於目錄結構的索引原因。而且我仍然不確定如何實際使用'InputStream'。將代碼如何使用'initSource'幫助? – Ryan

+0

嘗試使用'initSource = new File(getClass()。getResource(「/ resources/levels」)。getFile())' – AJA

+0

這仍然適用於Eclipse,但從命令提示符運行時仍然出現錯誤。但是,這次錯誤是'NullPointerException'。 – Ryan