2

Swing アプリケーションからジャスパー レポートを作成しています。コードを生成するための Java コードは次のとおりです。

 JasperDesign jd= JRXmlLoader.load("relative path");

    String sql = "";
    JRDesignQuery newQuery= new JRDesignQuery();
    newQuery.setText(sql);
    jd.setQuery(newQuery);
    JasperReport JASP_REP= JasperCompileManager.compileReport(jd);
    JasperPrint JASP_PRINT= JasperFillManager.fillReport(JASP_REP,null,conn);
    JasperViewer.viewReport(JASP_PRINT,false);

絶対パスでエラーが発生しています。データ ソースの xml コードは次のとおりです。

<defaultValueExpression >
        <![CDATA["reports/report1.jasper"]]>
    </defaultValueExpression>

しかし、それは次のエラーを示しています

java.io.FileNotFoundException: reports/report1.jasper (The system cannot find the path specified)

さんからいくつか提案をいただきました。

http://forums.devshed.com/java-help-9/relative-path-for-subreport-in-jasperreport-309313.html

しかし、このシーンでは誰も役に立ちません。

4

1 に答える 1

2

アプリケーションで作業している場合はJasper Swing、パスを絶対パスにするのがベスト プラクティスです。すべての.jrxmlファイルをファイルにコンパイルし、コンパイルされたファイルを常に.jasperロードするだけです。.jasper速いです。

jaspersimages、のようなフォルダstylesをアプリケーションの外側に作成します。そしてsystem/environment、以下のように変数を作成します。

JASPERDIR = "c:\\app\\jaspers";
STYLES = "c:\\app\\styles";
IMAGES="c:\\app\images";

次に、swing アプリケーションでSystem.getenv()メソッドを使用し、変数の名前を渡してパスを読み取ります。

このようにして、swing アプリケーションは毎回十分に柔軟になります。images, styles,.jasperファイルは、swing アプリケーションを再起動せずにいつでも変更できます。

于 2013-04-16T07:53:45.613 に答える