使用javascript语言编译JasperReport时出现异常
我试图编译一个JasperDesign,以编程方式创建一个报告。由于我需要在Javascript中包含条件样式,因此我相应地设置了JasperDesign语言:使用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,我将其添加到类路径
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引擎(根据),这可能造成了冲突,我尝试添加到sbtdependencyOverrides++=Set(“org.mozilla”%“Rhino”%“1.7.6”)
问题依然存在。我的解决方案是使用rhino 1.7.6 jar并手动将其放入应用程序库文件夹中。Play从那里加载,没有任何问题。