因同样的bundle部署到JBoss Fuse中可正常运行,而部署到servicemix7.0.1中就会报“NoSuchMethodError org.apache.camel.component.jetty8..."的错误,于是通过"feature:info camel-jetty"查看camel-jetty的信息,发现JBoss Fuse中用的camel-jetty依赖的是camel-jetty9,而servicemix7中camel-jetty依赖的是camel-jetty8,如图所示:
于是想到修改servicemix7中的camel-jetty依赖,解决上述报错问题。
不知道camel-jetty在哪个配置文件中,于是在安装目录中进行全词搜索,因词中有”-“,所以要运用到全词搜索。在windows环境中,在搜索框里填入‘~=“camel-jetty”’,定位到camel-jetty feature所在的配置文件为” apache-camel-2.16.5-features.xml“,在apache-servicemix-7.0.1\system\org\apache\camel\karaf\apache-camel\2.16.5目录下。
修改pache-camel-2.16.5-features.xml文件内容,注释掉原有配置
<!--<feature version='[8,9)'>jetty</feature>
<feature version='2.16.5'>camel-core</feature>
<bundle>mvn:org.apache.camel/camel-http-common/2.16.5</bundle>
<bundle>mvn:org.apache.camel/camel-jetty-common/2.16.5</bundle>
<bundle>mvn:org.apache.camel/camel-jetty8/2.16.5</bundle>-->
然后把camel-jetty9的依赖添加进去
<feature>camel-jetty9</feature>
如图所示:
修改完成后,重启servicemix,重新通过"feature:install camel-jetty"命令安装camel-jetty,此时通过“feature:info camel-jetty”查看信息,如图所示:
camel-jetty的依赖已成功修改成了camel-jetty9,上述jetty8相关的报错信息也不复存在了。