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&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.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.
smime.p7s
Description: S/MIME Cryptographic Signature
