Jasper reports JBoss 6/JasperReports类加载问题

Jasper reports JBoss 6/JasperReports类加载问题,jasper-reports,classloader,jboss6.x,Jasper Reports,Classloader,Jboss6.x,我对JBoss6中的类加载有一个问题,Jasper报告。我们有一个多ear应用程序,其中两个ear都在ear根目录的lib文件夹中包含一个jasperreports-4.5.0.jar副本(jar版本相同,如md5校验和所示) 事情一直很顺利,直到大约3周前,团队中的某个人进行了大规模登记以更改某些日期/时间格式。从那时起,尝试从一个EAR运行Jasper报告总是失败,并出现相同的堆栈跟踪: java.lang.ExceptionInInitializerError at net.sf.jasp

我对JBoss6中的类加载有一个问题,Jasper报告。我们有一个多ear应用程序,其中两个ear都在ear根目录的lib文件夹中包含一个jasperreports-4.5.0.jar副本(jar版本相同,如md5校验和所示)

事情一直很顺利,直到大约3周前,团队中的某个人进行了大规模登记以更改某些日期/时间格式。从那时起,尝试从一个EAR运行Jasper报告总是失败,并出现相同的堆栈跟踪:

java.lang.ExceptionInInitializerError
at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:83) [:5.1.0]
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121) [:5.1.0]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88) [:5.1.0]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103) [:5.1.0]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61) [:5.1.0]
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153) [:5.1.0]
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:82) [:5.1.0]
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653) [:5.1.0]
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969) [:5.1.0]
at com.landslide.reports.LandslideReport.printJasperReport(LandslideReport.java:411) [:]
at com.landslide.reports.LandslideReport.generateReport(LandslideReport.java:362) [:]
at com.landslide.reports.LandslideReport.exportToByteStream(LandslideReport.java:228) [:]
at com.landslide.reports.LandslideReport.exportToByteStream(LandslideReport.java:217) [:]
at com.landslide.common.delegate.MyListDelegate.createPDFDocumentForMyList(MyListDelegate.java:2491) [:]
at com.landslide.scheduledreport.ScheduledReportRun.getPdfFromMyList(ScheduledReportRun.java:367) [:]
at com.landslide.scheduledreport.ScheduledReportRun.run(ScheduledReportRun.java:197) [:]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [:1.6.0_39]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [:1.6.0_39]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_39]
Caused by: net.sf.jasperreports.engine.JRRuntimeException: Class net.sf.jasperreports.extensions.DefaultExtensionsRegistry does not implement/extend net.sf.jasperreports.extensions.ExtensionsRegistry
at net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:56) [:5.1.0]
at net.sf.jasperreports.extensions.ExtensionsEnvironment.createDefaultRegistry(ExtensionsEnvironment.java:81) [:5.1.0]
at net.sf.jasperreports.extensions.ExtensionsEnvironment.<clinit>(ExtensionsEnvironment.java:69) [:5.1.0]
... 19 more
java.lang.ExceptionInInitializeError
net.sf.jasperreports.engine.util.JRStyledTextParser.(JRStyledTextParser.java:83)[:5.1.0]
net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:121)[:5.1.0]
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:88)[:5.1.0]
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:103)[:5.1.0]
net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:61)[:5.1.0]
net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)[:5.1.0]
net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:82)[:5.1.0]
net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)[:5.1.0]
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969)[:5.1.0]
在com.slademy.reports.LandslideReport.printJasperReport(LandslideReport.java:411)[:]
在com.slademy.reports.LandslideReport.generateReport(LandslideReport.java:362)[:]
在com.slademy.reports.LandslideReport.exportToByteStream(LandslideReport.java:228)[:]
在com.slademy.reports.LandslideReport.exportToByteStream(LandslideReport.java:217)[:]
在com.slademy.common.delegate.MyListDelegate.createPDFDocumentForMyList(MyListDelegate.java:2491)[:]
在com.slademport.scheduledreport.ScheduledReportRun.getPdfFromMyList(ScheduledReportRun.java:367)[:]
在com.slademy.scheduledreport.ScheduledReportRun.run(ScheduledReportRun.java:197)[:]
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)[:1.6.039]
在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)[:1.6.039]
在java.lang.Thread.run(Thread.java:662)[:1.6.039]
原因:net.sf.jasperreports.engine.JRRuntimeException:Class net.sf.jasperreports.extensions.defaultextensions注册表未实现/扩展net.sf.jasperreports.extensions.extensions注册表
在net.sf.jasperreports.engine.util.ClassUtils.instanceClass(ClassUtils.java:56)[:5.1.0]
在net.sf.jasperreports.extensions.ExtensionsEnvironment.createDefaultRegistry(ExtensionsEnvironment.java:81)[:5.1.0]
在net.sf.jasperreports.extensions.ExtensionsEnvironment.(ExtensionsEnvironment.java:69)[:5.1.0]
... 还有19个
尝试从另一个ear使用Jasper Reports功能可以很好地工作

当冒犯者的耳朵自行展开时,一切正常。我猜想,不知何故,类加载变得“混乱”,当尝试初始化Jasper Extensions注册表时,接口类要么找不到,要么来自另一个ear的Jasper库,并且Jasper InstanceClass调用失败

我尝试将Jasper库修改为最新版本(5.1.0),并尝试在war的included in the EAR中使用jboss.classsloading.xml文件,以及EAR本身,试图强制类装入器隔离,但没有成功

有什么建议吗

谢谢


--Dave Swindell

这可能是一些类路径问题,也许您部署了重复的“jasper”库?每个ear都有一个jasperreports库的副本,但我认为jboss应该在每个ear中提供类加载隔离?