The open issue is https://github.com/grpc/grpc-java/issues/2727 . As I
mention in the issue, we really don't have OSGi experience.

On Thu, Jul 20, 2017 at 12:27 PM, 'Carl Mastrangelo' via grpc.io <
[email protected]> wrote:

> Osgi has problems with gRPC because io.grpc.Context is not in the same
> package as the grpc-core.  (Other teams depend on just context, but not
> core, so they need to be in separate jars.)
>
>
> On Tuesday, July 18, 2017 at 1:37:13 AM UTC-7, jian tian wrote:
>>
>> 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&amp;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&amp;Bundle-Version=${google.auth.version}</bundle>
>>
>>     
>> <bundle>wrap:mvn:io.grpc/grpc-protobuf-lite/${grpc.version}$Bundle-SymbolicName=grpc-protobuf-lite&amp;Bundle-Version=${grpc.version}</bundle>
>>     
>> <bundle>wrap:mvn:io.grpc/grpc-protobuf/${grpc.version}$Bundle-SymbolicName=grpc-protobuf&amp;Bundle-Version=${grpc.version}</bundle>
>>     
>> <bundle>wrap:mvn:io.grpc/grpc-stub/${grpc.version}$Bundle-SymbolicName=grpc-stub&amp;Bundle-Version=${grpc.version}</bundle>
>>     
>> <bundle>wrap:mvn:io.grpc/grpc-netty/${grpc.version}$Bundle-SymbolicName=grpc-netty&amp;Bundle-Version=${grpc.version}</bundle>
>>     
>> <bundle>wrap:mvn:io.grpc/grpc-okhttp/${grpc.version}$Bundle-SymbolicName=grpc-okhttp&amp;Bundle-Version=${grpc.version}</bundle>
>>     
>> <bundle>wrap:mvn:io.grpc/grpc-context/${grpc.version}$Bundle-SymbolicName=grpc-context&amp;Bundle-Version=${grpc.version}&amp;Export-Package=*;version=${grpc.version}</bundle>
>>     
>> <bundle>wrap:mvn:io.grpc/grpc-auth/${grpc.version}$Bundle-SymbolicName=io.grpc.grpc-auth&amp;Bundle-Version=${grpc.version}&amp;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&amp;Bundle-Version=0.4.3</bundle>
>>
>>     
>> <bundle>wrap:mvn:io.grpc/grpc-core/${grpc.version}$Bundle-SymbolicName=grpc-core&amp;Bundle-Version=${grpc.version}&amp;Import-Package=com.google.common.base,com.google.instrumentation.*&amp;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.cre
>> ateImplementationObject(SingleComponentManager.java:298) ~[?:?]
>>         at org.apache.felix.scr.impl.manager.SingleComponentManager.cre
>> ateComponent(SingleComponentManager.java:109) ~[?:?]
>>         at org.apache.felix.scr.impl.manager.SingleComponentManager.get
>> Service(SingleComponentManager.java:906) ~[?:?]
>>         at org.apache.felix.scr.impl.manager.SingleComponentManager.get
>> ServiceInternal(SingleComponentManager.java:879) ~[?:?]
>>         at org.apache.felix.scr.impl.manager.AbstractComponentManager.a
>> ctivateInternal(AbstractComponentManager.java:749) ~[?:?]
>>         at org.apache.felix.scr.impl.manager.AbstractComponentManager.e
>> nableInternal(AbstractComponentManager.java:675) ~[?:?]
>>         at org.apache.felix.scr.impl.manager.AbstractComponentManager.e
>> nable(AbstractComponentManager.java:430) ~[?:?]
>>         at org.apache.felix.scr.impl.manager.ConfigurableComponentHolde
>> r.enableComponents(ConfigurableComponentHolder.java:657) ~[?:?]
>>         at org.apache.felix.scr.impl.BundleComponentActivator.initialEn
>> able(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.createExten
>> sion(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.invokeBundleListe
>> nerCallback(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.FeaturesServiceIm
>> pl.startBundle(FeaturesServiceImpl.java:1281) ~[?:?]
>>         at 
>> org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:890)
>> ~[?:?]
>>         at org.apache.karaf.features.internal.service.FeaturesServiceIm
>> pl.doProvision(FeaturesServiceImpl.java:1170) ~[?:?]
>>         at org.apache.karaf.features.internal.service.FeaturesServiceIm
>> pl.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.findClassOrResou
>> rceByDelegation(BundleWiringImpl.java:1550) ~[?:?]
>>         at 
>> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:79)
>> ~[?:?]
>>         at org.apache.felix.framework.BundleWiringImpl$BundleClassLoade
>> r.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/62f2b176-da67-422e-8711-1635a7d405de%40googlegroups.com
> <https://groups.google.com/d/msgid/grpc-io/62f2b176-da67-422e-8711-1635a7d405de%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/CA%2B4M1oPS_Tb6CS5KcodPHXHQOdFeX0q6J7Y%3DRXy2t%3DO1HoQTuA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to