2016-07-13 19 views
0

プロジェクト構造からのレポートの構築:JasperReportsのは、瓶

戦争が含まれていますServlet.class

  • のpom.xml(依存関係としてjarファイルが含まれています)

瓶:

  • には戦争で使用されるクラスが含まれています

サーブレットインスタンスを作成し、メソッドgenerate()を呼び出します。

@Override 
public void doGet(HttpServletRequest req, 
        HttpServletResponse resp) 
     throws ServletException, IOException { 
A a = new a(); 
a.generate(); 
} 

その後、A.classで方法generateは、これらの行が含まれています

 InputStream is = this.getClass().getResourceAsStream("/reports/foo.jrxml"); 
    InputStream isSubReport = this.getClass().getResourceAsStream("/reports/foo_subreport.jrxml"); 
     JasperDesign jasperDesign = JRXmlLoader.load(isSubReport); 

だから、私はこの方法を実行するとjarのプロジェクトから - すべてはOKです。私は

JasperDesign jasperDesign = JRXmlLoader.load(isSubReport); 

ライン上の例外を取得しています、それを読んれるjarファイルからメソッドを呼び出すための正しい方法は何ですか - 私は依存関係として、このjarファイルを持っている、戦争からこのメソッドを呼び出していますが

、リソースとそれを動作させるには?

UPDATE:

まだ解決

私はレポートで同じ戦争でサーブレットを入れた場合 - InputStreamがOKに動作しますが、私は、戦争や瓶でそれらを分割する場合は - ではない作品を行います。

それはラインJasperDesign jasperDesign = JRXmlLoader.load(isSubReport);

をフリーズし、私は(も例外、白い画面デバッグなかっなし)驚くべきことに、深いデバッグせずに見ていないされた例外があります。

Method threw 'net.sf.jasperreports.engine.JRRuntimeException' exception. Cannot evaluate net.sf.jasperreports.engine.JRRuntimeException.toString() 

これをexeptionがここに表示されます(これはjasper-reports libのクラスです):

public JasperDesign loadXML(InputSource is) throws JRException { 
    try { 
     this.digester.push(this); 
     this.digester.parse(is); 
    } catch (SAXException var7) { 
     throw new JRException(var7); 
    } catch (IOException var8) { 
     throw new JRException(var8); 
    } finally { 
     this.digester.clear(); // this method works fine 
    } 
    //this line can not be reached (somewhere appears exception) 
    if(this.errors.size() > 0) { ... 
でも、何か明確にする

と - 例外の "messageKey" と "detailMessage":

util.message.provider.not.found 

答えて

0

を試してみてください。

  1. jarを依存関係なく構築する必要があります。

  2. jarに入れるのではなく、戦争に追加する必要があります。

  3. ビルドジャーと

0

はあなたのWEB-INF/libフォルダとインポートにJasperDesignパッケージをjarファイルを追加します。

+0

を完了jarファイルの依存関係とビルド戦争

  • は、私はすでにインポートした、数分 – quento

  • +0

    待ちにしようとします

  • 戦争に依存関係としてそれを置きますそれ。問題はinputStreamにあります – quento

    +0

    何の例外がありますか? –

    0

    入力ストリームが問題であるならば、私は同様の質問を検索して答えを見つけ、この

    InputStream inputstream = new FileInputStream("/reports/foo.jrxml");