2017-02-25 9 views
1

次のコードは、Eclipse IDEで正常に動作します。ファイルを読み取っているときにnullポイントの例外が発生する

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にコンパイルすると、nullポインタ例外が発生します。私はclass.getResourceとして取得しているので、それはうまくいくと思いました。 jarファイルでFileクラスを使用することはできませんか?キャストでさえない?

は(つまり、jarファイルが何であるかだ)

答えて

2

zipファイルのエントリをありがとう、あなたのファイルシステム内の既存のファイルではありません。したがって、ファイルシステム上のパスを表すFileを、zipエントリを参照するために使用することはできません。また、ファイルではないので、ファイルIOを使用してそのコンテンツを読むことはできません。

あなたは何をしたいのか分かりませんが、jarリソースの内容を読みたい場合は、ImageLab.class.getResourceAsStream()を使用して、エントリから読み込んでInputStreamを取得してください。

+0

問題は、私はFile型が必要であり、動作するAPIのメソッドのStream型ではないということです。 –

+0

可能であれば、そのAPIを修正するか、またはzipエントリを読み込んで一時ファイルに書き込んだ後、この一時ファイルを渡して、破損したAPIが再度読み取れるようにします。 –

関連する問題