JasperReports 3.0.0的UnsupportedClassVersionError

时间:2017-08-30 12:06:02

标签: java eclipse jasper-reports

我们的Web应用程序使用JasperReports 3.0.0生成PDF,我开始将我们的IDE版本(Eclipse)从Mars转移到基于JDK 8的Oxygen。 一切顺利,因为我们运行模拟报告创建的JUnit测试..

我们项目的Eclipse内部配置JDK是在JDK 7.x上设置的,而OS(Ubuntu 16.04 LTS)是为JDK 8设置的。 如果我运行我的测试,它会返回我在下面附带的例外情况:

java.lang.UnsupportedClassVersionError: RicevutaNoPrenotazione_1504035333064_598616 : 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:342)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassFromBytes(JRClassLoader.java:243)
at net.sf.jasperreports.engine.design.JRAbstractJavaCompiler.loadEvaluator(JRAbstractJavaCompiler.java:92)
at net.sf.jasperreports.engine.design.JRAbstractCompiler.loadEvaluator(JRAbstractCompiler.java:320)
at net.sf.jasperreports.engine.JasperCompileManager.loadEvaluator(JasperCompileManager.java:244)
at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:411)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:405)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:77)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:59)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:147)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:83)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at it.loginet.petrol.infrastructure.jasper.PetrolReport.fillTemplateWithParameters(PetrolReport.java:171)
at it.loginet.petrol.infrastructure.jasper.PetrolReport.createJasperPrint(PetrolReport.java:166)
at it.loginet.petrol.infrastructure.jasper.PetrolReport.exportReportToXml(PetrolReport.java:161)
at it.loginet.petrol.application.prenotazione.StampaNoPrenotazione.printAsXml(StampaNoPrenotazione.java:60)
at it.loginet.petrol.application.prenotazione.StampaNoPrenotazioneOnlineTest.verifyGeneratedXml(StampaNoPrenotazioneOnlineTest.java:71)
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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

尽管我们将项目设置为在JDK 7下运行,但似乎JasperReports使用错误的JDK(8)来编译我们的报告。 实际上,如果我在操作系统上运行我的JasperReports测试设置JDK 7,一切都会顺利。

我的机器上缺少哪些配置?

希望我能清楚地解释我们的情况,随时问任何问题:) 感谢

1 个答案:

答案 0 :(得分:0)

正如您已经说过的,您的项目似乎使用Java 7 运行,而您的报告使用JDK 8 进行编译。 (可能它默认使用你的JAVA_HOME,你说它设置为JDK 8)

请在Jaspersoft Studio中检查您的偏好并将其设置为1.7

窗口 - &gt;选择

Jaspersoft Studio preferences

或者你可以在这里查找使用的Java版本:

帮助 - &gt;安装细节 - &gt;构造

Jaspersoft Studio installation details