2014-11-24 222 views
2

我使用Eclipse的BIRT通过Java使用org.eclipse.birt.runtime版本4.4.0来呈现报告。Eclipse BIRT脚本报告:'无效的JavaScript表达式:dataSetRow'异常

当试图呈现报表,BIRT正在返回:

org.eclipse.birt.data.engine.core.DataException: Invalid Javascript expression: dataSetRow["name"]. (以及类似的用于每个dataSetRowrow错误)在IRunAndRenderTask.getErrors();

该模板可以正常使用BIRT设计器并通过该应用程序进行渲染,但在尝试使用Java进行渲染时会中断。

我在整个网络上做了大量的搜索,很多人都建议在应用程序中存在冲突js.jar。在我正在处理的应用程序中,情况并非如此。唯一的javascript/rhino实例是通过BIRT导入的实例。

我也尝试以下解决方案:

  • 剔除捆绑javascript和Mozilla的
  • 更新BIRT导入最新的犀牛/ javascript来4.4.1,创造了最新的BIRT设计报表模板
  • 降低了报表模板,只显示由DB返回一个值(在这种情况下,经销商的“名称”)

这项目正在使用Maven,并在Tomcat 7中运行 - 使用Java 6.

数据库正在使用mysql。

如果需要,可以提供更多详细信息。


编辑:被这个问题摆弄周围一点点,并发现以下几点:不打数据库精细渲染

  • 基本报告 - 甚至JavaScript表达式
  • 一旦我尝试从查询中获取数据集,然后抛出Invalid Javascript表达式,例如在模板中的这一部分:<data id="624"> <property name="dataSet">Dealership</property> <list-property name="boundDataColumns"> <structure> <property name="name">name</property> <text-property name="displayName">name</text-property> <expression name="expression" type="javascript">dataSetRow["name"]</expression> <property name="dataType">string</property> </structure> </list-property> <property name="resultSetColumn">name</property> </data>
    • 放置在上面datasetRow部分的任何值抛出一个无效的JavaScript错误
+0

是否有一个非常简单的报告工作(即只使用标题和简单的动态文本如“Hello”+“world”,而不使用数据库)?您是否尝试在java应用程序中应用两个单独的“运行”和“渲染”任务(这是AFAIK推荐的方法)? – Dominique 2014-11-24 09:18:14

+0

只是尝试这样做: 添加下列行: '<表达式名称= “表达” 类型= “JavaScript的”> “你好” + “世界” +参数[ “testparam”]' 和它呈现细。 我还没有把它分割成'run'和'render',现在我只是做: 'task.run();'' task.close();' 它似乎很好。我会尝试运行然后渲染。 事实上,它没有数据库的工作使我认为,驱动程序正在或什么东西......不知道 - 我已经考虑添加驱动程序(MySQL),但无法找到适当的Maven依赖项。 – kahyoung 2014-11-24 09:46:05

+0

编辑:MYSQL驱动程序似乎工作,因为它实际上击中了我的数据库与正确的查询 – kahyoung 2014-11-24 10:56:35

回答

0

发现这个问题出了什么问题。

我们使用Maven并决定检查并查看是否存在冲突的库。

我们找到了一个:Apache.FOP。

拿出来,之后Birt工作得很好。

0

我认为这可能因版本问题的BIRT的pom.xml引起Maven仓库。在这个版本中,我在Maven遇到了很多麻烦。

您应该试试这个:将BIRT maven dependency设置为您的项目中的“provided”,并将所有jar“手动”添加到official Eclipse birt-runtime 4.4.0 package的应用中。例如,在我身边,我在Netbeans中创建了一个自定义的本地Maven依赖项来处理这个问题,它工作得很好。我希望这会有所帮助。

+0

我已经用maven在类似的项目中使用DB2而不是MySQL,它的工作原理...所以我不知道它是否该问题。当你遇到这些问题时,你是否使用过mysql? 虽然我仍然会给你的解决方案,我会让你知道结果。 – kahyoung 2014-11-24 20:44:00

+0

这些Maven问题不是特定于MySql的,因此这可能不是同一个问题。如果它适用于DB2,那么甚至不值得尝试我所建议的。你如何从你的报告中访问MySQL? JDBC数据源,连接池,用于查询构建器的JDBC,...?该数据源是直接在报告中声明还是从.rptlibrary链接?什么是Java应用程序运行环境的JVM版本? – Dominique 2014-11-25 08:33:14

+0

该报告使用mysql JDBC驱动程序 - 它直接在报告中声明。 使用Java 1.6。 – kahyoung 2014-11-26 00:26:17