0

春には、画像をブラウザに表示したいと考えています。画像は私のメインプロジェクトにあります

> myproject
   - src
   - target
   - img.png

これは、 img.png がルートにあることを意味するため、パスを指定しませんが、.png を返しますNullPointerException。src にイメージを追加しようとしましたが、パスを変更しましsrc\img.pngたが、それでも NPE が表示されました。

このプロジェクトはMavenを使用していることに注意してください。

スタックトレース:

java.lang.NullPointerException: null
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792) ~[commons-io-2.4.jar:2.4]
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769) ~[commons-io-2.4.jar:2.4]
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744) ~[commons-io-2.4.jar:2.4]
    at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:462) ~[commons-io-2.4.jar:2.4]

私が使用するコードは次のとおりです。

InputStream in = DataService.class.getResourceAsStream("img.png");

        final HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.IMAGE_PNG);

        result.setData(new ResponseEntity<byte[]>(IOUtils.toByteArray(in), headers, HttpStatus.CREATED));

この質問に対するコメントは、閉鎖のマークが付けられています。

  • API getResourceAsStreamがこれを言うので、質問はプログラミングに関連しています:

この名前のリソースが見つからない場合は URL オブジェクトまたは null を返します

別の場所にnull追加しようとしても、コードが返されました。img.png

その質問の答えは、ファイルは同じディレクトリにある必要があると言っていますthisが、この質問では、クラスがあったのと同じ場所に画像を追加したにもかかわらず、DataService機能しませんでした。

4

3 に答える 3

1

ここでの問題は、/srcおそらくクラスパスのルート (プロジェクトのコンパイル方法によって異なります) であるため、img.png をsrcフォルダーに配置する必要があり、次のコードが機能することです。

DataService.class.getResourceAsStream("img.png");

通常、getResourceAsStream() はクラスパスのルートからファイルを探します。

于 2016-03-31T18:17:46.577 に答える
1

を使用してプロジェクトのセットアップが完了すると、画像をフォルダーMavenに追加することができました。resourcesコードから何も変更されていません:

DataService.class.getClassLoader().getResource("img.png")
于 2016-03-31T18:12:35.700 に答える
0

getResourceAsStream("/img.png") であり、getResourceAsStream("img.png") ではありません。

これが役立つことを願っています。

于 2016-03-31T16:34:50.960 に答える