我正在尝试编译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; 在net.sf.jasperreports.compilers.JavaScriptClassCompiler.compileUnits(JavaScriptClassCompiler.java:124) 在net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.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之间有冲突吗?
答案 0 :(得分:0)
我的解决方案是将rhino 1.7.6 jar放入应用程序lib文件夹中。 Play从那里加载,没有任何问题。