EclipseBIRT脚本报告:';无效的javascript表达式:dataSetRow';例外
我正在使用Eclipse的BIRT通过Java使用EclipseBIRT脚本报告:';无效的javascript表达式:dataSetRow';例外,java,eclipse,maven,birt,Java,Eclipse,Maven,Birt,我正在使用Eclipse的BIRT通过Java使用org.Eclipse.BIRT.runtimeversion4.4.0呈现报告 尝试呈现报告时,BIRT返回: org.eclipse.birt.data.engine.core.DataException:无效的Javascript表达式:dataSetRow[“name”]。 (对于IRunAndRenderTask的.getErrors()中的dataSetRow和行),也存在类似错误 使用BIRT设计器并通过该应用程序进行渲染,模板可以
org.Eclipse.BIRT.runtime
version4.4.0
呈现报告
尝试呈现报告时,BIRT返回:
org.eclipse.birt.data.engine.core.DataException:无效的Javascript表达式:dataSetRow[“name”]。
(对于IRunAndRenderTask
的.getErrors()
中的dataSetRow
和行
),也存在类似错误
使用BIRT设计器并通过该应用程序进行渲染,模板可以正常工作,但在尝试使用Java进行渲染时,模板会中断
我在网络上进行了广泛的搜索,许多人建议应用程序中存在冲突的js.jar
。我正在开发的应用程序并非如此。唯一的javascript/rhino实例是那些通过BIRT导入的实例
我还尝试了以下解决方案:
- 排除捆绑的javascript并从Mozilla导入最新的Rhino/javascript
- 将BIRT更新为
,并使用最新的BIRT设计器创建报告模板4.4.1
- 将报告模板降级为仅显示DB返回的一个值(在本例中为经销商的“名称”)
编辑:对这个问题进行了一点修改,发现了以下问题:
- 不影响数据库的基本报告呈现良好的javascript表达式
- 一旦我试图从查询中获取数据集,就会抛出无效的Javascript表达式,例如,在模板的这一部分:
经销权 名称 名称 dataSetRow[“名称”] 一串 名称
- 上述
部分中的任何值都会抛出无效的Javascript错误datasetRow
- 上述
您应该尝试这样做:在您的项目中将BIRT-maven依赖项设置为“provided”,并从中“手动”将所有jar添加到您的应用程序中。例如,在我这方面,我在Netbeans中创建了一个自定义的本地Maven依赖项来处理这个问题,它工作得非常好。我希望这会有所帮助。找出了这个问题的症结所在 我们正在使用Maven,并决定检查是否存在冲突库 我们找到了一个:Apache.FOP
拿出它,Birt在那之后工作得很好。做一个非常简单的报告工作(即只需要一个标题和一个简单的动态文本,如“Hello”+“world”,而不使用数据库)?您是否尝试在java应用程序中应用两个单独的“运行”和“渲染”任务(这可能是推荐的方法)?只尝试了以下内容:添加了以下行:
“Hello”+“World”+params[“testparam”]
,渲染效果良好。我没有把它分成run
和render
,现在我只做:task.run()代码>task.close()代码>而且似乎做得很好。我将尝试运行,然后渲染。事实上,它在没有DB的情况下工作,这让我觉得驱动程序出了问题或者其他什么。。。不确定-我已经研究过添加驱动程序(mysql),但找不到合适的maven依赖项。编辑:mysql驱动程序似乎可以工作,因为它实际上使用正确的查询访问了我的数据库。我以前在使用DB2而不是mysql的类似项目中使用过它,它可以工作。。。所以我不确定这是否是pom的问题。遇到这些问题时,您是否使用mysql?我仍然会尝试一下你的解决方案,我会让你知道结果。不,这些Maven问题不是MySql特有的,所以这可能不是同一个问题。如果它在您的DB2案例中起作用,那么就不值得尝试我的建议。如何从报表中访问MySQL?JDBC数据源、连接池、用于查询生成器的JDBC等等。。。?此数据源是直接在报表中声明的,还是从.rpt库链接的?java应用程序运行环境的JVM版本是什么?报告使用mysql JDBC驱动程序-它直接在报告中声明。使用Java1.6。