为什么org.apache.servicemix.bundles.elasticsearch-client找不到org.apache.http.client.AuthCache

问题描述 投票:0回答:1

问题

我正试图在karaf 4.2.2环境中使用camel bundle camel-elasticsearch-rest 2.22.2。

当我安装camel bundle camel-elasticsearch-rest时一切顺利,它会自动安装它的依赖项(screenshot of camel-elasticsearch-rest install bundle in karaf):

  • org.apache.servicemix.bundles.elasticsearch(org.apache.servicemix.bundles / org.apache.servicemix.bundles.elasticsearch / 6.1.1_1)
  • org.apache.servicemix.bundles.elasticsearch-client(org.apache.servicemix.bundles / org.apache.servicemix.bundles.elasticsearch-client / 6.1.1_1)
  • org.apache.httpcomponents.httpasyncclient(org.apache.httpcomponents / httpasyncclient-osgi / 4.1.3)
  • org.apache.httpcomponents.httpclient(org.apache.httpcomponents / httpclient-osgi / 4.5.5)
  • org.apache.httpcomponents.httpcore(org.apache.httpcomponents / httpcore-osgi / 4.4.9)

在我的代码中,我用这种方式调用camel-elasticsearch-rest:

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;

public class ServiceRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {

        CamelContext context = this.getContext();
        restConfiguration()
                .component("jetty")
                .host("localhost")
                .port(8200)
                .contextPath("/api")
                .dataFormatProperty("prettyPrint", "true")
                .apiProperty("cors", "true");

        rest("/elastic/test")
                .get("/")
                .route()
                .setBody(simple("{ \"indexName\": \"test-index\" }"))
                .to("elasticsearch-rest://elasticsearch?hostAddresses=127.0.0.1:9200&operation=INDEX&indexName=test-index&indexType=sample");
    }
}

我已经在karaf上安装了我的jar包,但是当驼峰上下文启动时,我收到此警告,导致驼峰路由关闭:

09:58:44.595 WARN [fileinstall-C:\ Program Files \ apache-karaf \ 4.2.2 / deploy]监听器导致异常,将忽略java.util.concurrent.ExecutionException:java.lang.NoClassDefFoundError:org / apache java.util.concurrent.FutureTask.get(FutureTask.java:192)〜[?: ?] at java.util.concurrent.AbstractExecutorService.doInvokeAny(AbstractExecutorService.java:193)〜[?:?]在java.util.concurrent.AbstractExecutorService.invokeAny(AbstractExecutorService.java:225)〜[?:?] at org org.apache.aries.blueprint.utils上的.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper $ 4.call(ScheduledExecutorServiceWrapper.java:185)~ [44:org.apache.aries.blueprint.core:1.10.1] .threading.ScheduledExecutorServiceWrapper $ 15.call(ScheduledExecutorServiceWrapper.java:446)~ [44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.utils.threading.RWLock.runReadOperation(RWLock .java:33)〜[44: org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper.runUnlessShutdown(ScheduledExecutorServiceWrapper.java:443)~ [44:org.apache.aries.blueprint.core :org.apache的org.apache.aries.blueprint.utils.threading.ScheduledExecutorServiceWrapper.invokeAny(ScheduledExecutorServiceWrapper.java:180)~ [44:org.apache.aries.blueprint.core:1.10.1] at org.apache orlets.apache.aries.blueprint.container.BlueprintEventDispatcher.callListeners(BlueprintEventDispatcher .java:178)[44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintEventDispatcher.blueprintEvent(BlueprintEventDispatcher.java:133)[44:org.apache。 aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:427)[44:org.apache.aries.bluep rint.core:1.10.1]在org.apache的org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278)[44:org.apache.aries.blueprint.core:1.10.1] .aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:299)[44:org.apache.aries.blueprint.core:1.10.1]在org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender .java:268)[44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:264)[44:org.apache。 aries.blueprint.core:1.10.1] org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:254)[44:org.apache.aries.blueprint.core:1.10.1] at org org.apache.aries.util.tracker上的.apache.aries.util.tracker.hook.BundleHookBundleTracker $ Tracked.customizerModified(BundleHookBundleTracker.java:500)[44:org.apache.aries.blueprint.core:1.10.1] .hook.BundleHookBundleTracker $ Tracked.customizerModified (BundleHookBundleTracker.java:433)[44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker $ AbstractTracked.track(BundleHookBundleTracker.java:725)[ 44:org.apache.aries.blueprint.core:1.10.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker $ Tracked.bundleChanged(BundleHookBundleTracker.java:463)[44:org.apache.aries。 blueprint.core:1.10.1] at org.apache.aries.util.tracker.hook.BundleHookBundleTracker $ BundleEventHook.event(BundleHookBundleTracker.java:422)[44:org.apache.aries.blueprint.core:1.10.1]在org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179)[:?]在org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730)[:?] at org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485)[?:?] org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579)[?:?] at org .apache.felix.framework.Felix.startBundle(Felix.java:2174 )org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)[?:?] org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle上的[?:?](DirectoryWatcher.java:1260 )[10:org.apache.felix.fileinstall:3.6.4] at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233)[10:org.apache.felix.fileinstall:3.6。 4]在org.apache.felix.fopcher.DinoryWatcher的org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:520)[10:org.apache.felix.fileinstall:3.6.4] .process(DirectoryWatcher.java:365)[10:org.apache.felix.fileinstall:3.6.4] at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316)[10:org。 apache.felix.fileinstall:3.6.4]引起:java.lang.NoClassDefFoundError:org.apache.camel.component.elasticsearch.ElasticsearchProducer.createClient上的org / apache / http / client / AuthCache(ElasticsearchProducer.java:255)〜 [?:?]位于org.apache.camel.component.elasticsearch.Elasti csearchProducer.startClient(ElasticsearchProducer.java:246)〜[?:?]位于org.apache.camel的org.apache.camel.component.elasticsearch.ElasticsearchProducer.doStart(ElasticsearchProducer.java:237)〜[?:?]。 support.ServiceSupport.start(ServiceSupport.java:61)〜[?:?]位于org.apache.camel的org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75)〜[?:?]。 impl.DeferServiceStartupListener.onCamelContextStarted(DeferServiceStartupListener.java:49)〜[:?]在org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3863)〜[:?]在org.apache.camel。在org.apache.camel的org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3494)〜[?:?]中的impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3642)〜[?:?]。在org.apache的org.apache.camel.impl.DefaultCamelContext $ 2.call(DefaultCamelContext.java:3253)〜[?:?]中的impl.DefaultCamelContext.access $ 000(DefaultCamelContext.java:209)〜[?:?]。 camel.impl.DefaultCamelContext港币$ 16。在org.apache.camel.impl.DefaultCamelContext的org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3272)〜[?:?]调用(DefaultCamelContext.java:3249)〜[?:?]。在org.apache.camel.impl.DefaultCamelContext的org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)〜[?:?]中的doStart(DefaultCamelContext.java:3249)〜[?:?]。 org.apache.camel.blue上的org.apache.camel.blueprint.BlueprintCamelContext.start(BlueprintCamelContext.java:243)〜[?:?]启动(DefaultCamelContext.java:3165)〜[?:?]。 mayStart(BlueprintCamelContext.java:283)〜[?:?] org.apache.camel.blueprint.BlueprintCamelContext.blueprintEvent(BlueprintCamelContext.java:177)〜[?:?] at org.apache.aries.blueprint.container。 BlueprintEventDispatcher $ 3.call(BlueprintEventDispatcher.java:190)〜[?:?] org.apache.aries.blueprint.container.BlueprintEventDispatcher $ 3.call(BlueprintEventDispatcher.java:188)〜[?:?] at java.util。 concurrent.FutureTask.run(FutureTask.java:2 66)〜[?:?] java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)〜[?:?] java.util.concurrent.FutureTask.run(FutureTask.java:266) 〜[?:?] java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)〜[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266)~ [ ?:?]在java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180)〜[?:?]在java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)〜 [?:?] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)〜[?:?]在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)〜[? :?]在java.lang.Thread.run(Thread.java:748)〜[?:?]引起:java.lang.ClassNotFoundException:org.apache.service.ixvicemix找不到org.apache.http.client.AuthCache .bundles.elasticsearch-client [124] at org.apache.felix.framework.BundleWiringImpl.findClassOrResource在org.apache.felix.framework.BundleWiringImpl上的org.apache.felix.framework.BundleWiringImpl.access $ 200(BundleWiringImpl.java:80)〜[?:?]中的ByDelegation(BundleWiringImpl.java:1639)〜[?:?] $ BundleClassLoader.loadClass(BundleWiringImpl.java:2053)〜[?:?] java.lang.ClassLoader.loadClass(ClassLoader.java:357)〜[?:?] at org.apache.camel.component.elasticsearch.ElasticsearchProducer org.apache.camel.component上的.gateClient(ElasticsearchProducer.java:255)〜[?:?] org.apache.camel.component.elasticsearch.ElasticsearchProducer.startClient(ElasticsearchProducer.java:246)〜[?:?] org.apache.camel上的org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)〜[?:?]的.elasticsearch.ElasticsearchProducer.doStart(ElasticsearchProducer.java:237)〜[?:?] org.apache.camel上的org.apache.camel.impl.DeferServiceStartupListener.onCamelContextStarted(DeferServiceStartupListener.java:49)〜[?:?]的.util.ServiceHelper.startService(ServiceHelper.java:75)〜[?:?] .impl.DefaultCamelContext.safelyStartRo在org.apache.camel.impl.DefaultCamelContext的org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3642)〜[?:?]的uteServices(DefaultCamelContext.java:3863)〜[?:?]。在org.apache.camel.impl.DefaultCamelContext的org.apache.camel.impl.DefaultCamelContext.access $ 000(DefaultCamelContext.java:209)〜[?:?]的doStartCamel(DefaultCamelContext.java:3494)〜[?:?] $ 2.call(DefaultCamelContext.java:3253)〜[?:?] org.apache.camel.impl.DefaultCamelContext $ 2.call(DefaultCamelContext.java:3249)〜[?:?] at org.apache.camel.impl .defaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3272)〜[?:?] org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3249)〜[?:?] org.apache.camel.support org.apache.camel.blueprint上的org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3165)〜[?:?]的.ServiceSupport.start(ServiceSupport.java:61)〜[?:?] org.apac .BlueprintCamelContext.start(BlueprintCamelContext.java:243)〜[?:?]在org.apache.camel.blueprint.BlueprintCamelContext.blueprintEvent(BlueprintCamelContext.java:177)〜[?:?]的or.camel.blueprint.BlueprintCamelContext.maybeStart(BlueprintCamelContext.java:283)〜[?:?] apache.aries.blueprint.container.BlueprintEventDispatcher $ 3.call(BlueprintEventDispatcher.java:190)〜[:?]在org.apache.aries.blueprint.container.BlueprintEventDispatcher $ 3.call(BlueprintEventDispatcher.java:188)〜[? :?:java.util.concurrent.FutureTask.run(FutureTask.java:266)〜[?:?] java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)〜[?:? ] java.util.concurrent.FutureTask.run(FutureTask.java:266)〜[?:?] java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)〜[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:266)〜[?:?]在java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(ScheduledThreadPoolExecutor.java:180)〜[?:?]在java .util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(Schedu在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor)的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)〜[?:?]中的ledThreadPoolExecutor.java:293)〜[?:?]。 java:624)〜[?:?]在java.lang.Thread.run(Thread.java:748)〜[?:?]


我的问题是为什么org.apache.servicemix.bundles.elasticsearch-client找不到类org.apache.http.client.AuthCache。

该类应该在karaf上正确安装的依赖项org.apache.httpcomponents.httpclient中。

我已经看到在org.apache.servicemix.bundles.elasticsearch-client包中没有导入的包(screenshot of the imported packages),这是正常的吗?这是一个错误,或者我错过了什么?

java apache elasticsearch apache-camel karaf
1个回答
0
投票

KARAF(OSGi)不支持elasticsearch-client

REF:https://github.com/apache/camel/blob/camel-2.23.x/platforms/karaf/features/src/main/resources/features.xml#L617

关于elasticsearch-client OSGi支持的讨论:https://github.com/elastic/elasticsearch/issues/28707

但是你可以将它构建为OSGi包,如下所述:Howto: osgi and shared packages?

© www.soinside.com 2019 - 2024. All rights reserved.