私はアプリケーション全体でジャスパーレポート(サブレポート付き)を複数持っています。何らかの理由で、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から行っていません。
この問題の原因がわかりません。私はそれが働いていたようにマイナーなものだと確信しています。うまくいけば、誰かがこれを見つけて解決策を持っているかもしれない。どんな答えもありがとうございます。 (私は私のサブレポートの内容について本当に多くの情報を提供していないことを知っていますが、それはかなりプライベートですが、レポートの内容と関連するサブレポートは変更されませんでした。 )
感謝に役立ちます願っています。あなたは投稿を落とした理由を説明するコメントをお願いしますか? –