2012-01-03 10 views
0

BIRT 3.7.1バージョンを使用するようにアプリケーションをアップグレードしようとしています。現在、バージョン2.6.0を使用しています。エンジンAPIでRunningCount集約を使用しているときにNullPointerExceptionが発生しました

私は最新の安定版リリース3.7.1を使用しています。

私のテストでは、シリアル番号(RunningCount集約)を使用しているレポートで例外が発生しています。この例外は、レポートエンジン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

renderの両方のタスクをReport Engine APIに分けて解決します。

IRunAndRenderTask task = engine.createRunAndRenderTask(design);の代わりに、IRunTask runTask = engine.createRunTask(design);IRenderTask renderTask = engine.createRenderTask(iReportDocument);を分離して実行してください。

関連する問題