使用 javascript 语言编译 JasperReport 时出现异常

Exception when compiling JasperReport with javascript language

我正在尝试编译 JasperDesign 以编程方式创建报告。由于我需要在 Java 脚本中包含条件样式,因此我相应地设置了 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; at net.sf.jasperreports.compilers.JavaScriptClassCompiler.compileUnits(JavaScriptClassCompiler.java:124) at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:203) at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:357) at net.sf.jasperreports.engine.JasperCompileManager.compileToStream(JasperCompileManager.java:326) at net.sf.jasperreports.engine.JasperCompileManager.compileReportToStream(JasperCompileManager.java:599)

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

我的解决方案是将 rhino 1.7.6 jar 手动放入应用程序 lib 文件夹中。播放从那里加载它没有问题。