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

标签 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; 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/

相关文章:

java - ProGuards 总是删除方法调用

java - 玩映射忽略RawSQL Ebean

Java JSON 序列化器 Play 框架

java - 如何在运行时更改 Jasper Reports PDF 版本

java - 从位于java目录中的文件名获取文件路径

java - 内存不足错误: Java Heap Space while reading file in java

java - 如何在不同的 URL 公开 JaxWS Web 服务端点?

java - 当一些变量名以数字开头时,如何将 Json 映射到 Java 类?

java - Play Framework - 新项目中不存在包

mysql - 如何在JSP中添加选择所有功能,例如日期从和到?