在TIBCOJaspersoft®Studio 6.6.0中,我将Abc.jrxml
文件编译为Abc.jasper
。
我测试过在Java 8项目中还可以。
但是由于某些遗留代码,我们不得不使用Java 7。如果我使用Abc.jasper
,Java 7环境将引发以下异常:
java.lang.UnsupportedClassVersionError: Abc_1557727912510_682674 : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClass(JRClassLoader.java:337)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassFromBytes(JRClassLoader.java:238)
at net.sf.jasperreports.engine.design.JRAbstractJavaCompiler.loadEvaluator(JRAbstractJavaCompiler.java:104)
at net.sf.jasperreports.engine.design.JRAbstractCompiler.loadEvaluator(JRAbstractCompiler.java:358)
at net.sf.jasperreports.engine.JasperCompileManager.getEvaluator(JasperCompileManager.java:381)
at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:467)
at net.sf.jasperreports.engine.fill.BaseReportFiller.<init>(BaseReportFiller.java:151)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:236)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:72)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:60)
at net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:201)
at net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller.java:216)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:116)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:667)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:983)
at uz.valijon.sbs_fault_reproducer.jasper.onemore.JasperTableExample.getJasperPrint(JasperTableExample.java:82)
at uz.valijon.sbs_fault_reproducer.jasper.onemore.JasperTableExample.init(JasperTableExample.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:344)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:295)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130)
... 38 more
为解决此问题,我在TIBCOJaspersoft®Studio 6.6.0中使用Java 7对其进行了编译。但是问题并没有消失。
这是项目设置:
我认为Jaspersoft仍在使用Java 8来编译* .jrxml文件。 (如果我创建新项目,Jaspersoft会将Java 8设置为默认环境。)
目前,我正在使用示例Java项目编译* .jrxml文件。
JasperCompileManager.compileReportToFile("path_to.jrxml"),
"path_to.jasper");
有人可以给我更好的解决方案吗? 我希望能够在Jaspersoft中做到这一点而不会遇到问题。