Hello everyone,
I was trying to use grpc(1.4.0) in karaf(4.1.1), but failed.
Following are my steps:
1) wrote the grpc "HelloWorld" demo, and built it as an osgi bundle.
2) wrote a feature.xml file which use to install dependencies, such as
io.netty.*, io.grpc.*, and built the feature
3) start karaf and install the feature
main code of features.xml
<feature name="rgpc-demo-feature" description="grpc demo feature"
version="${project.version}">
<bundle>mvn:io.netty/netty-common/4.1.8.Final</bundle>
<bundle>mvn:io.netty/netty-buffer/4.1.8.Final</bundle>
<bundle>mvn:io.netty/netty-resolver/4.1.8.Final</bundle>
<bundle>mvn:io.netty/netty-transport/4.1.8.Final</bundle>
<bundle>mvn:io.netty/netty-codec/4.1.8.Final</bundle>
<bundle>mvn:io.netty/netty-codec-http/4.1.8.Final</bundle>
<bundle>mvn:io.netty/netty-handler/4.1.8.Final</bundle>
<bundle>mvn:io.netty/netty-codec-http2/4.1.8.Final</bundle>
<bundle>mvn:com.google.guava/guava/19.0</bundle>
<bundle>mvn:com.google.protobuf/protobuf-java/3.3.0</bundle>
<bundle>wrap:mvn:com.google.auth/google-auth-library-credentials/${google.auth.version}$Bundle-SymbolicName=com.google.auth.google-auth-library-credentials&Bundle-Version=${google.auth.version}</bundle>
<bundle>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${google.auth.version}$Bundle-SymbolicName=com.google.auth.google-auth-library-oauth2-http&Bundle-Version=${google.auth.version}</bundle>
<bundle>wrap:mvn:io.grpc/grpc-protobuf-lite/${grpc.version}$Bundle-SymbolicName=grpc-protobuf-lite&Bundle-Version=${grpc.version}</bundle>
<bundle>wrap:mvn:io.grpc/grpc-protobuf/${grpc.version}$Bundle-SymbolicName=grpc-protobuf&Bundle-Version=${grpc.version}</bundle>
<bundle>wrap:mvn:io.grpc/grpc-stub/${grpc.version}$Bundle-SymbolicName=grpc-stub&Bundle-Version=${grpc.version}</bundle>
<bundle>wrap:mvn:io.grpc/grpc-netty/${grpc.version}$Bundle-SymbolicName=grpc-netty&Bundle-Version=${grpc.version}</bundle>
<bundle>wrap:mvn:io.grpc/grpc-okhttp/${grpc.version}$Bundle-SymbolicName=grpc-okhttp&Bundle-Version=${grpc.version}</bundle>
<bundle>wrap:mvn:io.grpc/grpc-context/${grpc.version}$Bundle-SymbolicName=grpc-context&Bundle-Version=${grpc.version}&Export-Package=*;version=${grpc.version}</bundle>
<bundle>wrap:mvn:io.grpc/grpc-auth/${grpc.version}$Bundle-SymbolicName=io.grpc.grpc-auth&Bundle-Version=${grpc.version}&Import-Package=javax.net.ssl,*</bundle>
<bundle>mvn:com.google.code.findbugs/jsr305/3.0.2</bundle>
<bundle>wrap:mvn:com.google.instrumentation/instrumentation-api/0.4.3$Bundle-SymbolicName=instrumentation-api&Bundle-Version=0.4.3</bundle>
<bundle>wrap:mvn:io.grpc/grpc-core/${grpc.version}$Bundle-SymbolicName=grpc-core&Bundle-Version=${grpc.version}&Import-Package=com.google.common.base,com.google.instrumentation.*&Export-Package=*;version=${grpc.version},io.grpc.internal;version=${grpc.version}</bundle>
<bundle>mvn:${project.groupId}/grpc-demo/${project.version}</bundle>
</feature>
Error:
java.lang.NoClassDefFoundError: io/grpc/Context
at
io.grpc.internal.AbstractServerImplBuilder.build(AbstractServerImplBuilder.java:193)
~[?:?]
at
com.zte.sdn.demo.grpc.HelloWorldServer.start(HelloWorldServer.java:48)
~[?:?]
at
com.zte.sdn.demo.grpc.HelloWorldServer.activate(HelloWorldServer.java:31)
~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[?:?]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[?:?]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:?]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
at
org.apache.felix.scr.impl.inject.BaseMethod.invokeMethod(BaseMethod.java:224)
~[?:?]
at
org.apache.felix.scr.impl.inject.BaseMethod.access$500(BaseMethod.java:39)
~[?:?]
at
org.apache.felix.scr.impl.inject.BaseMethod$Resolved.invoke(BaseMethod.java:617)
~[?:?]
at
org.apache.felix.scr.impl.inject.BaseMethod.invoke(BaseMethod.java:501)
~[?:?]
at
org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:302)
~[?:?]
at
org.apache.felix.scr.impl.inject.ActivateMethod.invoke(ActivateMethod.java:294)
~[?:?]
at
org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:298)
~[?:?]
at
org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:109)
~[?:?]
at
org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:906)
~[?:?]
at
org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:879)
~[?:?]
at
org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:749)
~[?:?]
at
org.apache.felix.scr.impl.manager.AbstractComponentManager.enableInternal(AbstractComponentManager.java:675)
~[?:?]
at
org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:430)
~[?:?]
at
org.apache.felix.scr.impl.manager.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:657)
~[?:?]
at
org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:341)
~[?:?]
at
org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:390)
~[?:?]
at
org.apache.felix.scr.impl.Activator.access$200(Activator.java:54) ~[?:?]
at
org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:265)
~[?:?]
at
org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:254)
~[?:?]
at
org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:227)
~[?:?]
at
org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482)
~[?:?]
at
org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415)
~[?:?]
at
org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232) ~[?:?]
at
org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444)
~[?:?]
at
org.apache.felix.framework.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:915)
~[?:?]
at
org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:834)
~[?:?]
at
org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:516)
~[?:?]
at
org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4562) ~[?:?]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2172)
~[?:?]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
~[?:?]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)
~[?:?]
at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1281)
~[?:?]
at
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:890)
~[?:?]
at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1170)
~[?:?]
at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$0(FeaturesServiceImpl.java:1069)
~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[?:?]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[?:?]
at java.lang.Thread.run(Thread.java:745) [?:?]
Caused by: java.lang.ClassNotFoundException: io.grpc.Context not found by
grpc-core [65]
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1550)
~[?:?]
at
org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:79)
~[?:?]
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1958)
~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:?]
... 46 more
Can anyboby give me some suggestions? Thanks.
--
You received this message because you are subscribed to the Google Groups
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit
https://groups.google.com/d/msgid/grpc-io/1b612c2b-39c3-4f83-82bd-ed0596ae610d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.