0

私のプロジェクトはEclipseで問題なく動作しますが、実行可能なjarとしてエクスポートすると多くの問題が発生します。.jar は実行可能ではなく、ダブルクリックしても何も起こりません。cmd の .jar で java -jar を実行すると、多くの NPE が発生します。明らかに、.jar から実行したときのスキャナーは null です。getResource は null を返しますが、その理由はわかりません。

Scanner in = null;
    try {
        in = new Scanner(new FileReader(getClass().getResource(filename)
                .getFile()));
        readLine(in);
        in.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

どこfilename = "../001.txt"

スキャナーを実行するクラスはgame/. ファイル001.txtlevels/そう../001.txtすべきです。

これは、マニフェストが .jar 内でどのように見えるかです

Manifest-Version: 1.0
Class-Path: .
Main-Class: game.Game

これは非常に厄介な問題であり、何時間もグーグルで検索しても解決策はありませんでした。以前にも同様の問題がありましたが、実際にはNPEではなく相対パスをロードしていました。

4

1 に答える 1

1

getResource() は、ファイルシステム パスからではなく、クラスパスからリソースをロードします。したがって、001.txt がパッケージ レベルにある場合は、次のように入力する必要があります。

ファイル名 = "/levels/001.txt";

先頭の「/」は絶対パスです。「../001.txt」を入力すると、これは相対クラスパスになり、/levels/game/../001.txt に変換されます

于 2013-04-08T12:54:34.967 に答える