0

Jasperレポートは、次のように.jrxmlファイルで参照される外部テンプレートとサブレポートを使用できます。

<template><![CDATA["repo:template.jrtx"]]></template>
<subreportExpression><![CDATA["repo:subreport.jrxml"]]></subreportExpression>

これは、Jasperサーバーで実行すると完全に機能しますが、Javaコードからインプロセスで起動すると、次のようなエラーが返されます。

net.sf.jasperreports.engine.JRException:リソースが見つかりません:repo:template.jrxml at net.sf.jasperreports.repo.RepositoryUtil.getResourceFromLocation(RepositoryUtil.java:255)atnet.sf.jasperreports.repo.RepositoryUtil。 getReport(RepositoryUtil.java:208)at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:329)

Jasperでは、デザイナーリソースは、レポートファイル内に保存されていないリソースリストに追加されます。どうすれば同じことができRepositoryUtilますか?RepositoryUtilつまり、「リポジトリ」を実際の場所に置き換えるように指示しますか?私が使用するコード:

Connection conn = ... ;
String reportSource = "C:\\report.jrxml";
Map<String, Object> params = new HashMap<String, Object>();
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, conn);
4

1 に答える 1

1

それは確かにクラスパスの問題です

Jasperは、最初に絶対パスとして、次にアプリのクラスパスを介した相対パスとしてリソースを読み込もうとします。

テンプレートとサブレポートの絶対パスに対処することを試みることができます、それはうまくいくはずです

また、アプリのクラスパスにリソースディレクトリを配置することもできます。-cp "/path/to/resourceDir/*"

于 2013-01-09T09:33:13.340 に答える