0

私が使用しているjasper-reportsを生成するクラスがあります

private String RESOURCE_HOME = "/reports/jasper";
getClass().getResource(RESOURCE_HOME + "/srPaySlipSalaryComp.jasper").getFile();

このクラスを jar にパッケージ化し、Tomcat @(WEB-INF/lib) 上のアプリケーションに配置します。

今私のサーバーでは、[tomcat]/webapp/[myapp]/reports/jasper に jaspers があります

Jar からこれらのファイルにアクセスするにはどうすればよいですか?

4

2 に答える 2

0

を使用してWebアプリケーションのリソースにアクセスします

ServletContext.getResourceAsStream(RESOURCE_HOME + "/srPaySlipSalaryComp.jasper");

上記のコードは、次の場所から表示されます。

  • Webアプリケーションフォルダ
  • /META-INF/resources存在する各ライブラリのWEB-INF/lib

あなたが持っているコードを使いたいなら

private String RESOURCE_HOME = "/reports/jasper";
getClass().getResource(RESOURCE_HOME + "/srPaySlipSalaryComp.jasper").getFile();

ファイルは次の2つの場所に存在する必要があります。

  • WEB-INF/classes
  • の任意のライブラリでWEB-INF/lib
于 2012-07-13T10:49:47.037 に答える
0

getClass().getResource()クラスローダーを使用してリソースをロードします。したがって、ロードできるリソースは、クラスパスでアクセスできるリソースです。したがって、 の jarWEB-INF/libから、または からWEB-INF/classes、または tomcat のクラスパスの jar からのみロードできます。

したがって、1 つの解決策 (おそらく最良の解決策) は、jasper ファイルを の jar ファイルWEB-INF/libまたは の下のディレクトリに配置することWEB-INF/classesです。

本当に jasper ファイルを webapp に入れたい場合は、ServletContext.getResource()を使用してリソースをロードする必要があります。

どちらのソリューションでも、取得できるのはファイルを指す URL ではなく、jar または war 内のリソースへの URL です。だから電話してはいけませんgetFile()。URL、または によって返された InputStreamgetResourceAsStream()を Jasper API に渡します。

于 2012-07-13T10:55:29.067 に答える