2012-01-03 107 views
0

我試圖升級我的應用程序以使用BIRT 3.7.1版本。目前我使用的是2.6.0版本。使用引擎API使用RunningCount聚合時出現NullPointerException

我正在使用最新的穩定版本3.7.1。

在我的測試過程中,我遇到了一個使用序列號(RunningCount Aggregation)的報告的異常。當我使用報表引擎API使用報表時,如果使用Web查看器,報表工作正常,則會發生此異常。

我附加了一個小測試用例來重新創建問題。這包括報告設計文件和我在那裏使用ReportEngine生成報告的類。

請看以下錯誤日誌:

Jan 3, 2012 4:34:42 PM org.eclipse.birt.report.engine.api.impl.RunAndRenderTask doRun 
SEVERE: An error happened while running the report. Cause: 
java.lang.NullPointerException 
    at org.eclipse.birt.core.util.IOUtil.writeInt(IOUtil.java:226) 
    at org.eclipse.birt.core.util.IOUtil.writeObject(IOUtil.java:674) 
    at org.eclipse.birt.data.engine.executor.transform.SimpleGroupCalculator.next(SimpleGroupCalculator.java:233) 
    at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.next(SimpleResultSet.java:562) 
    at org.eclipse.birt.data.engine.executor.transform.ResultSetWrapper.next(ResultSetWrapper.java:81) 
    at org.eclipse.birt.data.engine.impl.ResultIterator.hasNextRow(ResultIterator.java:584) 
    at org.eclipse.birt.data.engine.impl.ResultIterator.nextRow(ResultIterator.java:525) 
    at org.eclipse.birt.data.engine.impl.ResultIterator.next(ResultIterator.java:475) 
    at org.eclipse.birt.report.engine.data.dte.QueryResultSet.next(QueryResultSet.java:191) 
    at org.eclipse.birt.report.engine.executor.ListingElementExecutor.hasNextChild(ListingElementExecutor.java:244) 
    at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.hasNextChild(WrappedReportItemExecutor.java:86) 
    at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.hasNextChild(WrappedReportItemExecutor.java:86) 
    at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:62) 
    at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26) 
    at org.eclipse.birt.report.engine.layout.html.HTMLTableLM.layoutChildren(HTMLTableLM.java:132) 
    at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140) 
    at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:70) 
    at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92) 
    at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100) 
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:180) 
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77) 
    at com.eclipse.birt.test.RunningCountFieldTest.main(RunningCountFieldTest.java:52) 
Exception in thread "main" org.eclipse.birt.report.engine.api.EngineException: Error happened while running the report. 
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:196) 
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77) 
    at com.eclipse.birt.test.RunningCountFieldTest.main(RunningCountFieldTest.java:52) 
Caused by: java.lang.NullPointerException 
    at org.eclipse.birt.core.util.IOUtil.writeInt(IOUtil.java:226) 
    at org.eclipse.birt.core.util.IOUtil.writeObject(IOUtil.java:674) 
    at org.eclipse.birt.data.engine.executor.transform.SimpleGroupCalculator.next(SimpleGroupCalculator.java:233) 
    at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.next(SimpleResultSet.java:562) 
    at org.eclipse.birt.data.engine.executor.transform.ResultSetWrapper.next(ResultSetWrapper.java:81) 
    at org.eclipse.birt.data.engine.impl.ResultIterator.hasNextRow(ResultIterator.java:584) 
    at org.eclipse.birt.data.engine.impl.ResultIterator.nextRow(ResultIterator.java:525) 
    at org.eclipse.birt.data.engine.impl.ResultIterator.next(ResultIterator.java:475) 
    at org.eclipse.birt.report.engine.data.dte.QueryResultSet.next(QueryResultSet.java:191) 
    at org.eclipse.birt.report.engine.executor.ListingElementExecutor.hasNextChild(ListingElementExecutor.java:244) 
    at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.hasNextChild(WrappedReportItemExecutor.java:86) 
    at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.hasNextChild(WrappedReportItemExecutor.java:86) 
    at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:62) 
    at org.eclipse.birt.report.engine.layout.html.HTMLStackingLM.layoutChildren(HTMLStackingLM.java:26) 
    at org.eclipse.birt.report.engine.layout.html.HTMLTableLM.layoutChildren(HTMLTableLM.java:132) 
    at org.eclipse.birt.report.engine.layout.html.HTMLAbstractLM.layout(HTMLAbstractLM.java:140) 
    at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:70) 
    at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92) 
    at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:100) 
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:180) 
    ... 2 more 

你可以找到一個示例程序來重現問題GitHub

請幫我解決這個問題。

回答

0

我通過分開runrender任務Report Engine API來解決此問題。

代替使用IRunAndRenderTask task = engine.createRunAndRenderTask(design);分別運行IRunTask runTask = engine.createRunTask(design);IRenderTask renderTask = engine.createRenderTask(iReportDocument);

相關問題