birt 之 + 没有可用的报表设计对象。
1. 问题描述
昨天晚上把报表在本机做好了,想着今天部署测试呢。结果JJ了。放上去之后就开始提示
“ + 没有可用的报表设计对象。”
首先排除文件访问权限的问题,如果文件不存在那么提示应该是 “+ 报表文件: a.rptdesign 不存在或包含错误。
”
检查了一遍又一遍。
网上主要有两种解决方法:
版本问题。开头部分已经检查过,真的没有问题。
路径问题。不过这个不应该,这个应该说是 文件不存在
所以 可用性,应该是权限或者是文件本身是有问题,无法执行。
疯狂的找不同,一遍一遍的测试,查看源码。实在是不想重新写啊,毕竟格式我调的那么辛苦。
貌似不好使。
2. 解决过程
查看tomcat日志
catalina.log
发现异常:
Mar 15, 2017 11:20:57 AM org.eclipse.birt.report.model.parser.ModuleReader readModule
SEVERE: Line Number:124 Error Code:Error.XMLParserException.EXCEPTION Exception:org.eclipse.birt.report.model.api.command.WrongTypeException: The parent ODA Data Source(“Data Source”) is different element type with the target ODA Data Source(“Data Source”). Message:A generic exception occurred.
Mar 15, 2017 11:20:57 AM org.eclipse.birt.report.engine.api.impl.ReportEngineHelper getReportDesignHandle
SEVERE: invalid design file file:a.rptdesign
虽然我的英语不是很渣,但是这个实在很难懂啊。
当前的 ODA Data Source 元素类型 和目标不一致。
找到对应行。
<oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc.dbprofile" name="Data Source" id="7"
这是我的,再看下人家的:
<oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="Data Source" id="7"
简直了。。。。。。。
3.结语
找不同是个技术活,只不过很累。
本地环境一定要尽量和正式环境保持一致,这样应该能省点心吧。