birt报表在设计器中预览正常,但是发布到tomcat中出现问题。
异常如下:
The following items have errors:
Crosstab (id = 9):
- /olap/cube_Data Cube
/olap/cube_Data Cube
/olap/cube_Data Cube ( 1 time(s) )
detail : org.eclipse.birt.report.engine.api.EngineException: /olap/cube_Data Cube
/olap/cube_Data Cube
at org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1195)
at org.eclipse.birt.report.engine.executor.ExecutionContext.addException(ExecutionContext.java:1174)
at org.eclipse.birt.report.engine.internal.document.v4.ExtendedItemExecutor.executeQuery(ExtendedItemExecutor.java:267)
at org.eclipse.birt.report.engine.internal.document.v4.ExtendedItemExecutor.doExecute(ExtendedItemExecutor.java:232)
at org.eclipse.birt.report.engine.internal.document.v4.ExtendedItemExecutor.execute(ExtendedItemExecutor.java:181)
at org.eclipse.birt.report.engine.internal.document.v4.ContainerExecutor.prepareChildExecutor(ContainerExecutor.java:226)
at org.eclipse.birt.report.engine.internal.document.v4.ContainerExecutor.hasNextChild(ContainerExecutor.java:110)
...
Caused by: org.eclipse.birt.data.engine.core.DataException: /olap/cube_Data Cube
/olap/cube_Data Cube
at org.eclipse.birt.data.engine.olap.impl.query.CubeQueryResults.getCubeCursor(CubeQueryResults.java:202)
at org.eclipse.birt.report.engine.data.dte.CubeResultSet.<init>(CubeResultSet.java:78)
at org.eclipse.birt.report.engine.data.dte.DataPresentationEngine.doExecuteCube(DataPresentationEngine.java:225)
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:270)
at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1876)
at org.eclipse.birt.report.engine.internal.document.v4.ExtendedItemExecutor.executeQuery(ExtendedItemExecutor.java:259)
... 71 more
Caused by: java.io.FileNotFoundException: /olap/cube_Data Cube
at org.eclipse.birt.core.archive.compound.ArchiveFileV3.openEntry(ArchiveFileV3.java:101)
at org.eclipse.birt.core.archive.compound.ArchiveFile.openEntry(ArchiveFile.java:351)
at org.eclipse.birt.core.archive.compound.ArchiveReader.getStream(ArchiveReader.java:91)
at org.eclipse.birt.data.engine.olap.data.document.RADocumentManager.openDocumentObject(RADocumentManager.java:74)
at org.eclipse.birt.data.engine.olap.data.impl.Cube.load(Cube.java:156)
at org.eclipse.birt.data.engine.olap.data.api.CubeQueryExecutorHelper.loadCube(CubeQueryExecutorHelper.java:165)
at org.eclipse.birt.data.engine.olap.impl.query.CubeQueryResults.loadCube(CubeQueryResults.java:343)
at org.eclipse.birt.data.engine.olap.impl.query.CubeQueryResults.createCursor(CubeQueryResults.java:267)
at org.eclipse.birt.data.engine.olap.impl.query.CubeQueryResults.getCubeCursor(CubeQueryResults.java:109)
这是无法读取报表生成的临时文件引起的异常(或者压根没有生成),弄了一段时间,发现原来是版本问题引起的。
我把birt3.7.2制作的报表拿到birt2.6.2的环境中运行了,我试着用birt2.5.2 rcp制作的同样的报表放到birt2.6.2的环境中运行正常,无异常。
此文仅做学习标记,无技术内涵,如有同仁知道具体原理或是我说的不对,请指出。