Проблема Jasperreport с подотчетом с использованием javaflow - PullRequest
0 голосов
/ 16 февраля 2019

У меня проблема с подотчетом, использующим javaflow с Jasperreport 6.7.0 в соответствии с «Полным руководством по JasperReports» - Теодор Данчу, Лучиан Чирита, стр. 130. Мне нужно, чтобы избежать вызова различных потоков, когда отчет вызывается в нашем приложении, потому чтопо важным причинам.

Существует настройка default.jasperreport.properties

net.sf.jasperreports.subreport.runner.factory=net.sf.jasperreports.engine.fill.JRContinuationSubreportRunnerFactory

И когда я запускаю свой отчет с более чем 5 строками, появляется ошибка:

java.lang.IllegalStateException: повреждение стека при приостановке (пустой стек).Инструментарий net.sf.jasperreports.engine.fill.JRContinuationSubreportRunner @ 2024896527 / org.apache.catalina.loader.WebappClassLoader @ 1847497893 предназначен для javaflow?в org.apache.commons.javaflow.core.StackRecorder.execute (StackRecorder.java:131) в org.apache.commons.javaflow.api.Continuation $ MultiShotContinuation.resumeWith (Continuation.java:521) в org.apache.commons.javaflow.api.Continuation.resume (Continuation.java:314) в org.apache.commons.javaflow.api.Continuation.startWith (Continuation.java:219) в org.apache.commons.javaflow.api.Continuation.startWith(Continuation.java:169) по адресу org.apache.commons.javaflow.api.Continuation.startWith (Continuation.java:148) по адресу net.sf.jasperreports.engine.fill.JRContinuationSubreportRunner.start (JRContinuationSubreportRunner.java:53).net.sf.jasperreports.engine.fill.JRFillSubreport.prepare (JRFillSubreport.java:931) в net.sf.jasperreports.components.table.fill.FillTableSubreport.prepareSubreport (FillTableSubreport.java:1jjasreport.java:1j) в net.sf.components.table.fill.FillTable.prepare (FillTable.java:424) в net.sf.jasperreports.engine.fill.JRFillComponentElement.prepare (JRFillComponentElement.java:152) at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements (JRFillElementContainer.java:542) в net.sf.jasperreports.engine.fill.JRFillBand.fill (JRFillBand.java:453) в net.sf.jasperreports.fill..java: 813) по адресу net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart (JRVerticalFiller.java:264) по адресу net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport (JRVerticalFiller.java:110).sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:615) на net.sf.jasperreports.engine.fill.BaseReportFiller.fill (BaseReportFiller.java:413) на net.sf.jasperreports.engine.fill.JRFiller.fill (JRFiller.java:120) в net.sf.jasperreports.engine.fill.JRFiller.fill (JRFiller.java:103) в org.wgsoftpro.reposerver.SetReport.fillReport (SetReport.java:469) в org.wgsoftpro.reposerver.SetReport.runReport (SetReport.java:190) в org.wgsoftpro.reposerver.CreateReport.run (CreateReport.java:454) в org.apache.catalina.core.AsyncContextImpl $ RunnunWyn.java: 557) на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) на java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) на java.runTh..java: 748)

Если строк меньше, отчет запускается без проблем.

У меня есть зависимость в pom.xml для получения org.apache.commons.javaflow.api

<dependency>
    <groupId>net.tascalate.javaflow</groupId>
    <artifactId>net.tascalate.javaflow.api</artifactId>
    <version>2.4.0</version>
</dependency>

Любое предложение будет оценено.

ОБНОВЛЕНИЕ: я получил ту же ошибку с net.tascalate.javaflow.api версии 2.2.1

ОБНОВЛЕНИЕ 2: Я обнаружил, что если мы увеличим размер страницы и все данные будут соответствовать одномустраница, все работает.Так что проблема связана с инициализацией второй страницы

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="vetmed" language="javascript" pageWidth="595" ***pageHeight="1500"*** columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="c2935bae-a905-4770-8aca-21bb3b76afde">

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Ванильный Jar JasperReports (опубликованный на Maven) не предназначен для JavaFlow.

Существует вариант jar, который можно загрузить с SourceForge , см. Jasperreports-javaflow-6.7.0.jar

Но этот файл не публикуется в Maven, поэтому вам нужно найти способ использовать его в своей сборке.См. этот ответ о некоторых способах сделать это.

0 голосов
/ 16 февраля 2019

Раскрытие информации: я поддерживаю библиотеку Tascalate JavaFlow.Похоже, вы не использовали необходимые продолжающиеся классы во время сборки.

Tascalate Javaflow предоставляет и задачу Ant, и плагин Maven, я не уверен, что лучше всего работает с Jasper Reports, но вы можете: - включить плагин сборки Maven как descibed здесь .- настроить Ant, как в этом примере .

. Или, возможно, у вас есть набор непрерывных / непродолжительных методов в цепочке вызовов.

Кроме того, согласно информации о Maven Central Jasper Reports 6.7 использует Tascalate JavaFlow 2.2.1 - плохая идея создать ад контроля версий с добавлением более высокой версии (2.4.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...