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

ps0*_*604 6 java rhino jasper-reports nosuchmethoderror playframework

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

val jasperDesign = new JasperDesign
jasperDesign.setLanguage("javascript")
Run Code Online (Sandbox Code Playgroud)

请注意,我在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"
Run Code Online (Sandbox Code Playgroud)

问题是每当我编译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之间是否存在冲突?

ps0*_*604 0

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