You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OSGi/CXF环境下JasperReports ExtensionsEnvironment初始化失败(NoClassDefFoundError)问题求助

OSGi/CXF环境下JasperReports ExtensionsEnvironment初始化失败(NoClassDefFoundError)问题求助

各位好,我目前在基于OSGi容器(Karaf/Fuse)的项目中,使用Apache CXF 3.5.5搭配Pax Web/Jetty运行Java 17代码,最近在编译JasperReports模板时遇到了一个棘手的问题:调用JasperCompileManager.compileReportToFile()方法时抛出了NoClassDefFoundError,根源是net.sf.jasperreports.extensions.ExtensionsEnvironment类在静态初始化阶段直接失败了。

错误栈信息:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.extensions.ExtensionsEnvironment
    at net.sf.jasperreports.engine.DefaultJasperReportsContext.getExtensions(DefaultJasperReportsContext.java:273)
    ...
Caused by: java.lang.ExceptionInInitializerError: 
    at net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:81)
    at net.sf.jasperreports.extensions.ExtensionsEnvironment.createDefaultRegistry(ExtensionsEnvironment.java:91)
    at net.sf.jasperreports.extensions.ExtensionsEnvironment.<init>(ExtensionsEnvironment.java:78)

我的编译代码实现:

public static void compile(String reportKey) throws JRException {
    ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
    try {
        // 尝试切换到服务实现类的类加载器
        Thread.currentThread().setContextClassLoader(ExtensionsEnvironment.class.getClassLoader());
        
        File mainReportFile = new File(REPORT_PATH, reportKey + ".xml");
        File destFileParent = new File(REPORT_PATH + "compiled/");
        
        JasperCompileManager.compileReportToFile( // 此处执行失败
            mainReportFile.getAbsolutePath(),
            new File(destFileParent, reportKey + ".jasper").getAbsolutePath()
        );
    } finally {
        Thread.currentThread().setContextClassLoader(originalClassLoader);
    }
}

环境详情:

  • JasperReports版本:7.0.3(来自错误栈信息)
  • OSGi容器:Karaf/Fuse
  • Java版本:17
  • Apache CXF版本:3.5.5
  • 运行载体:通过Pax Web部署在Jetty上

我的疑问:

  1. 为什么在OSGi环境中,ExtensionsEnvironment的静态初始化流程会失败?
  2. JasperReports 7.0.3和Apache CXF 3.5.5在OSGi环境下是否存在已知的兼容性问题?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 11:33:09