使用JavaScript语言编译JasperReport时发生异常

时间:2018-07-15 12:36:33

标签: java playframework jasper-reports rhino nosuchmethoderror

我正在尝试编译JasperDesign以编程方式创建报告。由于需要在Javascript中包含条件样式,因此我相应地设置了JasperDesign语言:

val jasperDesign = new JasperDesign
jasperDesign.setLanguage("javascript")

请注意,我正在Java 8上使用Scala 2.11,并在Play for Scala 2.5上运行

由于JasperReports 6.4.3(我正在使用的版本)对rhino 1.7.6有依赖性,因此我将其添加到了类路径中:

libraryDependencies += "org.mozilla" % "rhino" % "1.7.6"

问题在于,每当我编译JasperDesign时,都会出现异常。即使我不包括Javascript条件样式,也会发生这种情况:

  

java.lang.NoSuchMethodError:   org.mozilla.javascript.ContextFactory.enterContext()Lorg / mozilla / javascript / Context;           在net.sf.jasperreports.compilers.JavaScriptClassCompiler.compileUnits(JavaScriptClassCompiler.java:124)           在net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:203)           在net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:357)           在net.sf.jasperreports.engine.JasperCompileManager.compileToStream(JasperCompileManager.java:326)           在net.sf.jasperreports.engine.JasperCompileManager.compileReportToStream(JasperCompileManager.java:599)

如果删除jasperDesign.setLanguage("javascript"),则没有编译错误。这里缺少什么? Nashorn和Rhino之间有冲突吗?

1 个答案:

答案 0 :(得分:0)

我的解决方案是将rhino 1.7.6 jar放入应用程序li​​b文件夹中。 Play从那里加载,没有任何问题。