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

Karaf中Camel Blueprint集成ActiveMQ异常排查求助

问题排查:Camel Blueprint配置在Karaf中无法运行

环境信息

  • Karaf 4.4.3
  • Camel 3.20.2
  • ActiveMQ 5.16.6

配置文件内容

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
    
    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
        <property name="brokerURL" value="tcp://localhost:61616" />
    </bean>
      
    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
        <route>
            <from uri="activemq:kafka.incoming"/>
            <to uri="activemq:quickfixj.incoming"/>            
        </route>
        
        <route>
            <from uri="activemq:quickfixj.outgoing"/>
            <to uri="activemq:kafka"/>                
        </route>
        
        <route>
            <from uri="activemq:kafka"/>                        
            <to uri="activemq:kafka.outgoing"/>
        </route>
    </camelContext>
</blueprint>

异常日志

2023-03-02T12:40:10,962 | WARN  | fileinstall-/opt/krf/apache-karaf-4.4.3/deploy | BlueprintEventDispatcher         | 85 - org.apache.aries.blueprint.core - 1.10.3 | Listener caused an exception, will be ignored
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: org/apache/camel/util/IntrospectionSupport
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
        at java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[?:?]
        at java.util.concurrent.AbstractExecutorService.doInvokeAny(AbstractExecutorService.java:204) ~[?:?]
        at java.util.concurrent.AbstractExecutorService.invokeAny(AbstractExecutorService.java:235) ~[?:?]
        at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper$4.call(ScheduledExecutorServiceWrapper.java:185) ~[?:?]
        at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper$15.call(ScheduledExecutorServiceWrapper.java:446) ~[?:?]
        at org.apache.aries.blueprint.utils.threading.RWLock.runReadOperation(RWLock.java:33) ~[?:?]
        at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper.runUnlessShutdown(ScheduledExecutorServiceWrapper.java:443) ~[?:?]
        at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper.invokeAny(ScheduledExecutorServiceWrapper.java:180) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintEventDispatcher.callListener(BlueprintEventDispatcher.java:195) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintEventDispatcher.callListeners(BlueprintEventDispatcher.java:178) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintEventDispatcher.blueprintEvent(BlueprintEventDispatcher.java:133) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:447) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:298) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:335) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:288) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:284) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:274) ~[?:?]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500) ~[?:?]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433) ~[?:?]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725) ~[?:?]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463) ~[?:?]
        at org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422) ~[?:?]
        at org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1384) ~[?:?]
        at org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730) ~[?:?]
        at org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485) ~[?:?]
        at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4847) ~[?:?]
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2363) ~[?:?]
        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:1006) ~[?:?]
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) ~[?:?]
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) ~[?:?]
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1221) ~[?:?]
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:515) ~[?:?]
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) ~[?:?]
        at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) ~[?:?]
Caused by: java.lang.NoClassDefFoundError: org/apache/camel/util/IntrospectionSupport
        at org.apache.activemq.camel.component.ActiveMQComponent.convertPathToActualDestination(ActiveMQComponent.java:161) ~[?:?]
        at org.apache.camel.component.jms.JmsComponent.createEndpoint(JmsComponent.java:1117) ~[?:?]
        at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:171) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:974) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:890) ~[?:?]
        at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:62) ~[?:?]
        at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:195) ~[?:?]
        at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:95) ~[?:?]
        at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:75) ~[?:?]
        at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49) ~[?:?]
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:937) ~[?:?]
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:800) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:3008) ~[?:?]
        at org.apache.camel.support.service.BaseService.init(BaseService.java:83) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2679) ~[?:?]
        at org.apache.camel.support.service.BaseService.start(BaseService.java:111) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2698) ~[?:?]
        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:262) ~[?:?]
        at org.apache.camel.blueprint.BlueprintCamelContext.start(BlueprintCamelContext.java:241) ~[?:?]
        at org.apache.camel.blueprint.BlueprintCamelContext.maybeStart(BlueprintCamelContext.java:283) ~[?:?]
        at org.apache.camel.blueprint.BlueprintCamelContext.blueprintEvent(BlueprintCamelContext.java:188) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:197) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:195) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.ClassNotFoundException: org.apache.camel.util.IntrospectionSupport not found by org.apache.camel.camel-util [185]
        at org.apache.activemq.camel.component.ActiveMQComponent.convertPathToActualDestination(ActiveMQComponent.java:161) ~[?:?]
        at org.apache.camel.component.jms.JmsComponent.createEndpoint(JmsComponent.java:1117) ~[?:?]
        at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:171) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:974) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:890) ~[?:?]
        at org.apache.camel.support.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:62) ~[?:?]
        at org.apache.camel.reifier.AbstractReifier.resolveEndpoint(AbstractReifier.java:195) ~[?:?]
        at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:95) ~[?:?]
        at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:75) ~[?:?]
        at org.apache.camel.impl.DefaultModelReifierFactory.createRoute(DefaultModelReifierFactory.java:49) ~[?:?]
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:937) ~[?:?]
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:800) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:3008) ~[?:?]
        at org.apache.camel.support.service.BaseService.init(BaseService.java:83) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2679) ~[?:?]
        at org.apache.camel.support.service.BaseService.start(BaseService.java:111) ~[?:?]
        at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2698) ~[?:?]
        at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:262) ~[?:?]
        at org.apache.camel.blueprint.BlueprintCamelContext.start(BlueprintCamelContext.java:241) ~[?:?]
        at org.apache.camel.blueprint.BlueprintCamelContext.maybeStart(BlueprintCamelContext.java:283) ~[?:?]
        at org.apache.camel.blueprint.BlueprintCamelContext.blueprintEvent(BlueprintCamelContext.java:188) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:197) ~[?:?]
        at org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:195) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]

问题分析与解决方法

从异常栈的根因java.lang.ClassNotFoundException: org.apache.camel.util.IntrospectionSupport not found by org.apache.camel.camel-util [185]可以看出,这是OSGi环境下bundle依赖缺失或版本不匹配导致的类加载失败问题。

解决步骤:

  1. 统一Camel Bundle版本:检查Karaf中已安装的Camel相关bundle版本,确保camel-util的版本与Camel核心版本(3.20.2)完全一致,版本不一致会导致类加载冲突。
  2. 安装必要的Karaf特性:在Karaf控制台执行以下命令,确保安装了Camel ActiveMQ和Blueprint的完整特性:
    feature:install camel-activemq camel-blueprint
    
  3. 检查并启动camel-util bundle:执行命令查看camel-util的状态:
    bundle:list | grep camel-util
    
    如果bundle状态不是Active,使用以下命令启动它(替换<bundle-id>为实际的ID):
    bundle:start <bundle-id>
    
  4. 兼容性检查:若上述步骤无效,可能是ActiveMQ 5.16.6与Camel 3.20.2存在兼容性问题。建议更换为与Camel 3.20.x系列兼容的ActiveMQ版本(如5.17.x)。

内容的提问来源于stack exchange,提问作者Roman Kuzmitchev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:17:35