使用 Gradle 编译 JasperReports 收到不受支持的版本错误



最近我在 jenkins 上实现了一个新的构建器,其中包含 gradle 运行。我们的项目包含 jasper 报告,所以我在下面添加了任务来编译 jasper 报告,其中包含由 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 系统输出 O 错误 [14:38:53,333 - WebContainer : 0] (RunReportBean.java:100( - ****Throwable java.lang.UnsupportedClassVersionError: JVMCFRE003 bad main version; 类=kybgeneldurum_1501049070032_205074,偏移量=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.(基本报告填充.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(

我们使用 websphere 8.5 在运行时与 java 1.6 一起使用。这是java版本输出

/

opt/IBM/WebSphere/AppServer/java/bin/java -version java version "1.6.0" Java(TM( SE 运行时环境(构建( pxa6460_26sr8fp2ifix-20141114_01(SR8( FP2+IV66608+IV66375+IX90155+IV66944(( IBM J9 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 气相色谱 - R26_Java626_SR8_20141114_1023_B222464_CMPRSS J9CL - 20141114_222464( JCL - 20141005_01

第一次我把错误gradle配置为使用java 1.7.0_51运行,所以我将gradle java更改为"java 1.6.03",但没有任何变化。知道吗?

我在 ant块中使用以下代码打印了所有 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 错误。

相关内容

  • 没有找到相关文章

最新更新