4

/src/main/resources/file.txt にある Maven プロジェクトのファイルを読み込もうとしています。

私は使用しています

URL url=this.getClass().getResource("/");
String filePath=url.getPath()+"file.txt";

これがEclipseを介して実行されると、urlオブジェクトは正しい値を取得します。

しかし、jar をパッケージ化してコマンド ラインで実行すると、次のようになります。

jar -cp myjar.jar SampleTest

「url」オブジェクトに対して null を返し、次の行で NullPointerException をスローします。

ファイルブラウザを使用してJarファイルを開いて確認しました。Jar内の「/」の場所に「file.txt」があります。

どこが間違っていますか?

4

2 に答える 2

8

jar ファイル内には (多くの場合) ディレクトリはありません。そのため、 が返されnullます。


ファイルを取得したい場合は、そのリソースを直接取得できます。

URL fileUrl = getClass().getResource("/file.txt");
...

または単に:

InputStream fileInputStream = getClass().getResourceAsStream("/file.txt");
于 2012-06-20T08:58:42.440 に答える
2

そのファイルを CLASSPATH に移動し、次のように取得する必要があります。

InputStream is = this.getClass().getResourceAsStream("file.txt");
于 2012-06-20T09:00:02.250 に答える