WSO2 Micro Integrator 4.2.0调度任务时出现类找不到异常求助
解决WSO2 Micro Integrator 4.2.0中调度任务时的ClassNotFoundException问题
问题概述
在WSO2 Micro Integrator 4.2.0中部署与4.0.0版本相同的CAR文件后,调度任务时出现类找不到异常,核心错误如下:
java.lang.ClassNotFoundException: org.wso2.carbon.inbound.endpoint.EndpointListenerLoader cannot be found by org.wso2.micro.integrator.initializer_4.2.0
使用Java版本:openjdk version "11.0.22" 2024-01-16 LTS
完整错误日志:
[2024-01-23 05:38:24,581] INFO {org.apache.synapse.transport.passthru.core.PassThroughListeningIOReactorManager} - Pass-through HTTP Listener started on 0.0.0.0:8317 [2024-01-23 05:38:24,584] INFO {org.apache.synapse.transport.passthru.core.PassThroughListeningIOReactorManager} - Pass-through HTTPS Listener started on 0.0.0.0:8280 [2024-01-23 05:38:24,585] INFO {org.wso2.micro.integrator.initializer.StartupFinalizer} - WSO2 Micro Integrator started in 5.89 seconds [2024-01-23 05:38:24,590] FATAL {org.wso2.micro.integrator.initializer.ServiceBusInitializer} - Failed to initialize ESB due to a fatal error java.lang.NoClassDefFoundError: org/wso2/carbon/inbound/endpoint/EndpointListenerLoader at org.wso2.micro.integrator.initializer.ServiceBusInitializer.activate(ServiceBusInitializer.java:220) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:235) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343) at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:113) at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:985) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:866) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:804) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:228) at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:525) at org.eclipse.osgi.internal.framework.BundleContextImpl.registerService(BundleContextImpl.java:544) at org.wso2.micro.integrator.ntask.core.internal.TasksDSComponent.activate(TasksDSComponent.java:147) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:345) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) at org.eclipse.equinox.internal.ds.Resolver.buildNewlySatisfied(Resolver.java:473) at org.eclipse.equinox.internal.ds.Resolver.enableComponents(Resolver.java:217) at org.eclipse.equinox.internal.ds.SCRManager.performWork(SCRManager.java:816) at org.eclipse.equinox.internal.ds.SCRManager$QueuedJob.dispatch(SCRManager.java:783) at org.eclipse.equinox.internal.ds.WorkThread.run(WorkThread.java:89) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: java.lang.ClassNotFoundException: org.wso2.carbon.inbound.endpoint.EndpointListenerLoader cannot be found by org.wso2.micro.integrator.initializer_4.2.0 at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:512) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:423) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:415) at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:155) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527) ... 38 more [2024-01-23 05:38:24,624] INFO {org.wso2.micro.integrator.ntask.core.impl.AbstractQuartzTaskManager} - Task scheduled: [ESB_TASK][tskLinkedIn]. [2024-01-23 05:38:24,627] ERROR {Events.Framework} - FrameworkEvent ERROR org.osgi.framework.BundleException: Could not resolve module: org.wso2.micro.integrator.observability [222] Unresolved requirement: Import-Package: org.wso2.carbon.inbound.endpoint.internal.http.api; version="4.2.0" at org.eclipse.osgi.container.Module.start(Module.java:457) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$1.run(ModuleContainer.java:1820) at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$2$1.execute(EquinoxContainerAdaptor.java:150) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1813) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1770) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1735) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1661) at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345) [2024-01-23 05:38:24,657] INFO {org.apache.synapse.mediators.builtin.LogMediator} - {proxy:prxyMrktLinkedIn} To: , MessageID: urn:uuid:1edb3fb1-7688-4988-8dae-c09cb61d436a, Direction: request, log-proxyName = Inside Proxy: LINKEDIN, log-retryCount = 0
解决方案
检查并修复CAR包依赖:
WSO2 MI 4.2.0对Inbound Endpoint模块的依赖结构做了调整,4.0.0的CAR包可能缺少对应版本的依赖。如果是通过DevStudio构建,确保项目的MI依赖版本为4.2.0,重新构建CAR包后再部署。同时确认CAR包中包含org.wso2.carbon.inbound.endpoint相关bundle,版本与MI 4.2.0匹配。修复OSGi框架依赖缺失:
日志中显示observability模块无法解析Inbound Endpoint的API,说明MI环境中可能缺少核心bundle:- 下载官方完整的WSO2 MI 4.2.0安装包,替换现有环境
repository/components/plugins目录下的org.wso2.carbon.inbound.endpoint_*.jar文件。 - 清理缓存:删除
repository/components/temp和repository/components/org.eclipse.osgi目录,重启MI,让OSGi重新加载所有组件。
- 下载官方完整的WSO2 MI 4.2.0安装包,替换现有环境
验证任务与Inbound Endpoint的配置兼容性:
如果调度任务关联了Inbound Endpoint,检查4.2.0版本中该Inbound Endpoint的API或配置是否有变更,同步调整任务配置中的相关引用。重新构建兼容4.2.0的CAR包:
直接复用4.0.0的CAR包可能存在兼容性问题,建议在DevStudio中创建基于MI 4.2.0的新项目,导入原有配置后重新构建CAR包,再部署到目标环境。
内容的提问来源于stack exchange,提问作者Venkatesh
相关产品推荐
相关产品推荐

