2017-02-25 87 views
1

以下代碼在我的Eclipse IDE上正常工作。閱讀文件時Jar零點異常

private void getLayersAndDisplay() throws Exception { 
     URL imageURL = ImageLab.class.getResource("earthlights.jpg"); 
     File imageFile = new File(imageURL.toURI()); 
     URL shapeFileURL = ImageLab.class.getResource("countries.shp"); 
     File shapeFile = new File(shapeFileURL.toURI()); 
     URL shapeFileURL2 = ImageLab.class.getResource("Brasil.shp"); 
     File shapeFile2 = new File(shapeFileURL2.toURI()); 
     displayLayers(imageFile, shapeFile,shapeFile2); 
    } 

但是,編譯到jar時,它給了我一個空指針異常。我認爲,因爲我得到它作爲class.getResource,它會工作。我不能在一個jar中使用File類嗎?甚至沒有演員?

謝謝

回答

2

(這是一個jar文件是什麼)一個zip文件的入口爲不存在在你的文件系統中的文件。所以你不能使用表示文件系統路徑的File來引用一個zip條目。你不能使用文件IO來讀取它的內容,因爲它不是一個文件。

我不知道你想做什麼,但是如果你想讀取jar資源的內容,只需使用ImageLab.class.getResourceAsStream()就可以從條目中讀取InputStream。

+0

問題是,我需要一個文件類型,而不是一個流類型的方法從一個API的工作。 –

+0

然後修復該API(如果可能)或從您的zip條目中讀取並寫入臨時文件,然後傳遞此臨時文件,以便損壞的API可以再次讀取它。 –