1

バックエンドJavaコントローラーから、src / main / resources/stylesの下に保存されているWebアプリケーションのcssファイルにアクセスできる必要があります。iTextでPDF出力を作成するために使用したいと思います。

言い換えれば、私はこのようなことをしたいのです:

CssFile cssFile1 = XMLWorkerHelper.getCSS(new FileInputStream("src/main/resources/styles/my.css"));

ただし、次のような例外を受け取っているため、これについては明らかに正しく行っていません。

java.io.FileNotFoundException: styles\standard.css (The system cannot find the path specified)

コントローラでこれらのファイルを取得するにはどうすればよいですか?

これを試しましたが、機能しませんでした。同じエラーです。

String rcp = econtext.getRequestContextPath();
CssFile cssFile1 = XMLWorkerHelper.getCSS(new FileInputStream(rcp + "src/main/resources/styles/my.css"));
4

2 に答える 2

2

FileInputStreamローカルディスクファイルシステム上で動作し、すべての相対パスは現在の作業ディレクトリを基準にしています。これは、JVMが起動した瞬間に開かれるローカルディスクファイルシステムフォルダです。src/main/resourcesこれは間違いなくフォルダのルートではありません。

/src/main/resourcesクラスパスリソースのルートのMavenフォルダー構造として認識できる場合は、ClassLoader#getResourceAsStream()代わりにクラスパスリソースとして取得する必要があります。

InputStream input = getClass().getResourceAsStream("/styles/standard.css");
// ...

または、クラスが別のクラスローダーによってロードされたJARにパッケージ化されている可能性がある場合。

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("styles/standard.css");
// ...

参照:

于 2013-02-07T18:18:30.780 に答える
-1

これは、JSFがWebアプリだからです。次に、これに移動しstyles/my.cssWEB-INF/styles/my.css 、コントローラー内でアクセスするファイルがWebAppの一部であることを確認します

これで、を使用してリソースにアクセスできます

XMLWorkerHelper.class.getResourceAsStream("styles/my.css")
于 2013-02-07T18:21:07.400 に答える