我正在尝试编译 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; 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 文件夹中。 Play 从那里加载它没有问题。
关于java - 用javascript语言编译JasperReport时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51348440/