2017-08-03 51 views
0

最近,我实施了一个新的构建器,在jenkins上运行gradle。我们的项目包含碧玉报告,所以我在下面的任务中添加了jasper报告api提供的ant任务来编译碧玉报告。使用Gradle编译JasperReports获取不受支持的版本错误

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 ERROR [14:38:53,333 - WebContainer : 0] (RunReportBean.java:100) - ****Throwable java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=kybgeneldurum_1501049070032_205074, offset=6 at java.lang.ClassLoader.defineClassImpl(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:275) 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.(BaseReportFiller.java:152) at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:239) at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:69) at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:57) 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:85) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:456) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:863) at tr.gov.uyap.fonk.report.engine.impl.jasper.JasperReportEngine.runReport(JasperReportEngine.java:95)

我们对java 1.6使用websphere 8.5进行运行时。这是Java的版本输出

/opt/IBM/WebSphere/AppServer/java/bin/java -version java version "1.6.0" Java(TM) SE Runtime Environment (build pxa6460_26sr8fp2ifix-20141114_01(SR8 FP2+IV66608+IV66375+IX90155+IV66944)) IBM J9 VM (build 2.6, JRE 1.6.0 Linux amd64-64 Compressed References 20141114_222464 (JIT enabled, AOT enabled) 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 03年1月6日”,但什么都没有改变。任何想法 ?

+0

通过典型的工作流程,编写报告的开发人员还负责编译报告(在开发过程中预览并验证报告是否正常工作)。通常不需要使用单独的进程来编译报告 - 除非报告是机器生​​成的。 –

+0

我们不会将二进制文件夹提交到代码库。所以我们必须在jenkins构建过程中编译报告文件 – mfidan

+0

@mfidan我只想知道您使用什么样的部署过程将报告部署到jasper服务器。如果有 – Nikhil

回答

0

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

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

我看到gradle这个以某种方式使用系统默认的Java作为java.endoresed.dir财产虽然我在gradle.properties文件org.gradle.java.home值设置为1.6。

java.endorsed.dirs=/usr/java/jdk1.7.0_51/jre/lib/endorsed

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

相关问题