2017-03-10 9 views
0

私はeclipseから作られたパックマンゲームを.jarパッケージにエクスポートしようとしています。問題は、.jarがエクスポートされるときに、すべてがEclipse上で正常に実行されている間に、私が使用するリソースが正しく読み込まれないということです。私はそれらをビルドパス上にある別の/res folderに持っています。私は、次の方法でそれらにアクセス:JavaのgetResourceが.jarファイルで動作しない

ClassLoader classLoader = getClass().getClassLoader(); 
    try{ 
     image = ImageIO.read(new File(classLoader.getResource("images/PM0.gif").getFile())); 
    } 
    catch (IOException e1) { 
     e1.printStackTrace(); 

    } 

File file = new File(classLoader.getResource("levels/"+fileName).getFile());

は私が間違って何をしているのですか? hereは、私が得たエラーの例です(eclipseでエクスポートされた.jarでのみ正常に動作します)

+1

可能な複製(http://stackoverflow.com/questions/2393194/how-to-access-resources-in- [JARファイル内のリソースにアクセスする方法?] jar-file) –

+0

jarファイル内のオブジェクトはファイルではなく、 'File'を使ってそれらにアクセスすることはできません。 –

答えて

0

リソースを扱うときは、ストリームではなく、ファイルではなく(本当に変わったことをやろうとしていない限り)

は、次のことを試してください:の

ImageIO.read(classLoader.getResourceAsStream("images/PM0.gif")) 
+0

私はそれが動作しているように見えましたが、私が使用しているスキャナーは問題を '私に与えています' Scanner s = new Scanner(this.getClass()。getClassLoader()。getResourceAsStream( "levels /" + fileName)); 'これは、パッケージ化されたときに正しく動作するように見えません。 – user19955

+0

@ user19955スキャナを使用しないでくださいファイルを読み取ろうとしている場合は、代わりにその解決策を試してください: http://stackoverflow.com/questions/29611661/how-to-make-scanner-strings-into- a-stream-in-java –

1

jarの中からリソースを取得するには、getResourceAsStream()を使用する必要があります。

実行時環境が実際のファイルを使用して「アンパック」されたJAR(またはより良いプッシュパック済み)を使用して実行されるため、eclipseで動作します。

関連する問題