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

使用javascript语言编译JasperReport时出现异常,java,playframework,jasper-reports,rhino,nosuchmethoderror,Java,Playframework,Jasper Reports,Rhino,Nosuchmethoderror,我试图编译一个JasperDesign,以编程方式创建一个报告。由于我需要在Javascript中包含条件样式,因此我相应地设置了JasperDesign语言: val jasperDesign = new JasperDesign jasperDesign.setLanguage("javascript") 注意,我在Java 8上使用Scala 2.11,在Scala 2.5上运行 由于JasperReports 6.4.3(我正在使用的版本)依赖rhino 1.7.6,我将其添加到类路径

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

val jasperDesign = new JasperDesign
jasperDesign.setLanguage("javascript")
注意,我在Java 8上使用Scala 2.11,在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.jractcompiler.compileReport(jractcompiler.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之间是否存在冲突?

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

听起来你在类路径的某个地方寻找Rhino 1.6或更高版本
ContextFactory.enterContext()
是在1.7R1中添加的。Play使用的是基于Rhino的Trireme JavaScript引擎(根据),这可能造成了冲突,我尝试添加到sbt
dependencyOverrides++=Set(“org.mozilla”%“Rhino”%“1.7.6”)
问题依然存在。我的解决方案是使用rhino 1.7.6 jar并手动将其放入应用程序库文件夹中。Play从那里加载,没有任何问题。