0

我在使用 Jasper Reports 的 JBoss 6 中加载类时遇到问题。我们有一个多耳朵应用程序,其中两个耳朵每个都在耳朵根目录的 lib 文件夹中包含一份 jasperreports-4.5.0.jar(jar 版本相同,如 md5 校验和所示)的副本。

直到大约 3 周前,当团队中的某个人进行大规模签到以更改某些日期/时间格式时,事情一直很顺利。从那时起,尝试从一只耳朵运行 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

尝试从另一只耳朵使用 Jasper 报告功能可以正常工作。

当有问题的耳朵自行展开时,一切都很好。我猜想类加载以某种方式变得“混乱”,并且当尝试初始化 Jasper 扩展注册表时,接口类要么找不到,要么来自另一只耳朵的 jasper 库并且失败了 Jasper实例化类调用。

我尝试将 Jasper 库更新到最新版本(5.1.0),并尝试使用包含在耳朵中的战争中的 jboss.classsloading.xml 文件以及耳朵本身,以尝试强制类加载器孤立,但没有运气。

有什么建议么?

谢谢,

——戴夫·斯温德尔

4

0 回答 0