2012-10-18 21 views
5

私はアプリケーション全体でジャスパーレポート(サブレポート付き)を複数持っています。何らかの理由で、1つのレポート(サブレポートも含まれます)がもう機能していません。 1日以上のデバッグ後、無限ループに入り、サブレポート作成用のスレッドを作成し続けることが分かりました。上記の方法は、サブレポートを充填するためにスレッドを開始ジャスパーレポート:サブレポートが無限ループを引き起こしています

JRSubReportRunnable.java

public void run() 
{ 
    running = true;  
    error = null; 

    try 
    { 
     fillSubreport.fillSubreport(); 
    } 
    catch (JRFillInterruptedException e) 
    { 
     //If the subreport filler was interrupted, we should remain silent 
    } 
    // we have to catch Throwable, because it is difficult to say what would happen with the master 
    // filler thread in case we don't 
    catch (Throwable t) //NOPMD 
    { 
     error = t; 
    } 

    running = false; 
} 

デバッガとの間でループし続けます。一度行われ、running = falseを設定し、デバッガがに取得します。

JRThreadSubreportRunner.java

public void run() 
{ 
    super.run(); 

    if (log.isDebugEnabled()) 
    { 
     log.debug("Fill " + subreportFiller.fillerId + ": notifying of completion"); 
    } 

    synchronized (subreportFiller) 
    { 
     //main filler notified that the subreport has finished 
     subreportFiller.notifyAll(); 
    } 
} 

スレッドが終了したら、それは上記の方法subreportFiller.notifyAll();ラインになります。その後、デバッガはJRSubreportRunnable.javaなどに戻ります。

理論的には、5つのサブレポートがある場合は、5つのスレッドを作成する必要があります。残念ながら、この場合、スレッドの作成は継続され、デバッガは上記2つのメソッドの間に「スタック」します(FYI:クラスはjasperreports-3.7.6-sources.jar)。

私はsimilar StackOverflow questionを見つけましたが、答えは私のためにそこに動作しませんでした提案:

をも試してみました。また提案された解決策のいずれも、this thread on the JasperSoft Communityから行っていません。

この問題の原因がわかりません。私はそれが働いていたようにマイナーなものだと確信しています。うまくいけば、誰かがこれを見つけて解決策を持っているかもしれない。どんな答えもありがとうございます。 (私は私のサブレポートの内容について本当に多くの情報を提供していないことを知っていますが、それはかなりプライベートですが、レポートの内容と関連するサブレポートは変更されませんでした。 )

+1

感謝に役立ちます願っています。あなたは投稿を落とした理由を説明するコメントをお願いしますか? –

答えて

4

私は正確に同じ問題を抱えていたし、ここで示唆されているように、真から偽 に私のサブレポートのisPrintWhenDetailOverflowsプロパティを変更することによってそれを解決: http://community.jaspersoft.com/questions/527078/infinite-loop-subreport-fill

は、それがdownvoteのため

+0

お返事ありがとうございます。私はそれを試しました、正直言って、私はSOとJasperSoft Communityに関連するすべてのことを試しましたが、それは私にとってはうまくいかなかったのです。現在のところ、この問題は私のプロジェクトにとって大きな優先事項ではないと考えられていたので、(それはしばらくの間)それを見直しました。 しかし、誰かが解決策を思い付くと、私はそれらを見渡すことはできませんでした。前もって感謝します ! –

+0

これは私のために働いたので、いくつかのシナリオが異なる必要がありますが、この投稿は4年前からありましたので、実際には問題ではありません。 – CodeMonkey

関連する問題