У меня есть несколько Отчеты Jasper (с подзаголовками) в моем приложении. По какой-то причине один отчет (который также содержит подзаголовки) больше не работает. После отладки более 1 дня я узнал, что он входит в бесконечный цикл и продолжает создавать потоки для заполнения суб-отчета.Отчеты Jasper: подчиненные отчеты вызывают бесконечный цикл
Отладчик продолжает цикл между:
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 потоков (работает для меня для других отчетов). К сожалению, для этого случая он продолжает создавать потоки, и мой отладчик «застревает» между двумя упомянутыми выше методами (FYI: классы относятся к jasperreports-3.7.6-sources.jar).
Также пробовал:
Я нашел similar StackOverflow question, но ответ предложил там не работает для меня. Ни одно из предлагаемых решений от this thread on the JasperSoft Community.
Я действительно не могу понять, почему эта проблема возникает. Я уверен, что это нечто второстепенное, как оно работало. Надеюсь, кто-то другой наткнулся на это и может решить. Заранее благодарим за любой ответ. (Я знаю, что я не предоставил очень много информации о содержании моих под-отчетов, но он довольно приватен, но я могу заверить вас, что содержание отчета и связанных с ним отчетов не изменилось - проверено с Git)
Спасибо за downvote. Не могли бы вы прокомментировать объяснение, почему вы отказали в публикации? –