使用 Gradle 编译 JasperReports 得到不受支持的版本错误
Compile JasperReports with Gradle gets unsupported version error
最近我在 jenkins 上用 gradle 运行s 实现了一个新的构建器。我们的项目包含 jasper 报告,因此我在下面添加了任务,以使用由 jasper 报告 api 提供的 ant 任务编译 jasper 报告。
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)
我们使用 websphere 8.5 运行时间 java 1.6。这是 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
第一次我得到错误 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 属性 尽管我在 [=12] 中将 org.gradle.java.home
值设置为 1.6 =] 文件.
java.endorsed.dirs=/usr/java/jdk1.7.0_51/jre/lib/endorsed
我通过将系统 java 版本更改为 1.6 解决了这个问题。
这可能是一个 gradle 错误。
最近我在 jenkins 上用 gradle 运行s 实现了一个新的构建器。我们的项目包含 jasper 报告,因此我在下面添加了任务,以使用由 jasper 报告 api 提供的 ant 任务编译 jasper 报告。
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)
我们使用 websphere 8.5 运行时间 java 1.6。这是 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
第一次我得到错误 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 属性 尽管我在 [=12] 中将 org.gradle.java.home
值设置为 1.6 =] 文件.
java.endorsed.dirs=/usr/java/jdk1.7.0_51/jre/lib/endorsed
我通过将系统 java 版本更改为 1.6 解决了这个问题。 这可能是一个 gradle 错误。