0

マルチモジュールプロジェクトがあります

Project
  |--src
      |-JavaFile.java

Web-Project
  |-Web-Content
    |-images
    |   |-logo.PNG
    |-pages
    |-WEB-INF
  1. 通常のJavaモジュール-すべてのJavaファイルを含むsrcが含まれています
  2. 動的Webプロジェクトモジュール-すべてのWeb関連のものが含まれています

最終的に、通常のJavaモジュールはlibフォルダーの動的Webモジュールのjarファイルになります

問題

コンパイル後のJavaファイルは、コンテキストではなく、c:\ ibm \ sdp \ server completepath\logo.pngでイメージファイルを検索します。ファイルは、iTextに対して以下のようにJavaファイルで定義されています。

Image logo = Image.getInstance("/images/logo.PNG");

画像を参照するようにJavaファイルを変更する方法を提案してください。プロジェクトの構造を変更することは許可されていません。

4

1 に答える 1

1

ServletContext#getResource()あなたはそれを使う必要がありますgetResourceAsStream()。Webコンテンツ内のリソースをURLそれぞれ返します。InputStream

InputStream input = getServletContext().getResourceAsStream("/images/logo.PNG");
// ...

このようにして、Webアプリがデプロイされている場所(および方法)に依存しません。絶対ディスクファイルシステムパスに依存すると、移植性の問題が発生するだけです。

参照:


更新:コメントによると、あなたはiTextを使用しているようです(質問でもう少し明確にしたはずです、私はそれを編集しました)。次に、 :Image#getInstance()を取るメソッドを使用できます。URL

URL url = getServletContext().getResource("/images/logo.PNG");
Image image = Image.getInstance(url);
// ...

更新2:コメントによると、JSFコンテキストに座っていることがわかります(質問でもそれを明確にする必要があります)。ExternalContext#getResource()代わりにを使用して:を取得する必要URLがあります

URL url = FacesContext.getCurrentInstance().getExternalContext().getResource("/images/logo.PNG");
Image image = Image.getInstance(url);
// ...
于 2011-10-21T17:07:27.200 に答える