用Gradle编译JasperReports获取不受支持的版本错误

最近我实施了一个新的生成器,在jenkins上运行gradle。 我们的项目包含碧玉报告,所以我在下面的任务中添加了jasper报告api提供的ant任务来编译碧玉报告。

 task compileJasper {
  println "############# Compiling JasperReports in Projet $project.name ###################"
        def jasperSourceDir =sourceSets.main.java.srcDirs[0]
    def jasperTargetDir = sourceSets.main.output.classesDir
    def classPath = ant.path {
        fileset(dir: "JarLib/", includes: '**.jar')
    }
    ant {
        taskdef(name: 'jrc', classname: 'net.sf.jasperreports.ant.JRAntCompileTask',
                                classpath: classPath)
        jasperTargetDir.mkdirs()
        jrc(srcdir: jasperSourceDir, destdir: jasperTargetDir) {
            classpath(path: classPath)
            include(name: '**/*.jrxml')
        }
    }
}

一切都很好,编译和按预期工作,但将项目部署到服务器后,在运行时得到以下错误。

[8/3/17 14:38:53:340 EET] 000000f5 SystemOut O错误[14:38:53,333 - WebContainer:0](RunReportBean.java:100) - **** Throwable java.lang.UnsupportedClassVersionError:JVMCFRE003不好的主要版本; 类= kybgeneldurum_1501049070032_205074,偏移= 6在java.lang.ClassLoader.defineClassImpl(本机方法)在需要java.lang.ClassLoader.defineClass(ClassLoader.java:275)在net.sf.jasperreports.engine.util.JRClassLoader.loadClass(JRClassLoader的.java:337)在net.sf.jasperreports.engine.util.JRClassLoader.loadClassFromBytes(JRClassLoader.java:238)在net.sf.jasperreports.engine.design.JRAbstractJavaCompiler.loadEvaluator(JRAbstractJavaCompiler.java:104)在净。 sf.jasperreports.engine.design.JRAbstractCompiler.loadEvaluator在net.sf.jasperreports.engine.fill.JRFillDataset(JRAbstractCompiler.java:358)在net.sf.jasperreports.engine.JasperCompileManager.getEvaluator(JasperCompileManager.java:381)。 createCalculator(JRFillDataset.java:467)在net.sf.jasperreports.engine.fill.BaseReportFiller。(BaseReportFiller.java:152)在net.sf.jasperreports.engine.fill.JRBaseFiller。(JRBaseFiller.java:239)在净.sf.jasperreports.engine.fill.JRVerticalFiller。(JRVerticalFiller.java:69)at net.sf.jasperreports.engi ne.fill.JRVerticalFiller。(JRVerticalFiller.java:57)在net.sf.jasperreports.engine.fill.JRFiller.createBandReportFiller(JRFiller.java:201)在net.sf.jasperreports.engine.fill.JRFiller.createReportFiller(JRFiller .java:216)at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:85)at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:456)at net.sf. jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:863)在tr.gov.uyap.fonk.report.engine.impl.jasper.JasperReportEngine.runReport(JasperReportEngine.java:95)

我们在java 1.6中使用websphere 8.5进行运行时。 这是java -version输出

IBM J9运行环境(构建pxa6460_26sr8fp2ifix-20141114_01(SR8 FP2 + IV66608 + IV66375 + IX90155 + IV66944))/ / opt / IBM / WebSphere / AppServer / java / bin / java -version Java版本“1.6.0” VM(build 2.6,JRE 1.6.0 Linux amd64-64压缩参考20141114_222464(启用JIT,启用AOT)J9VM - R26_Java626_SR8_20141114_1023_B222464 JIT - r11.b07_20141003_74578.01 GC - R26_Java626_SR8_20141114_1023_B222464_CMPRSS J9CL - 20141114_222464)JCL - 20141005_01

在第一次,我得到了配置为使用java 1.7.0_51运行的错误gradle,因此我将gradle java更改为“java 1.6.03”,但没有任何更改。 任何想法 ?


我用蚂蚁块中的以下代码打印所有的蚂蚁属性。

ant {
    for (o in properties)
     println o
     ...
     ..
     .
}

虽然我将gradle.properties文件中的org.gradle.java.home值设置为1.6,但我发现该gradle以某种方式使用系统默认java作为java.endoresed.dir属性。

java.endorsed.dirs =的/ usr /爪哇/ jdk1.7.0_51 / JRE / LIB /认可

我最终将系统Java版本更改为1.6。 这可能是一个gradle bug。

链接地址: http://www.djcxy.com/p/85053.html

上一篇: Compile JasperReports with Gradle gets unsupported version error

下一篇: cxf, jaxb on AIX/IBM Java