2016-11-22 135 views
1

尝试使用PubSub的在我的AppEngine我加入以下PubSub的Java的API使用限制SelectorProvider

<dependency> 
    <groupId>com.google.cloud</groupId> 
    <artifactId>google-cloud-pubsub</artifactId> 
    <version>0.6.0</version> 
</dependency> 

当我试图让我的PubSub例如

PubSub pubsub = PubSubOptions.getDefaultInstance().getService(); 

我收到这个异常:

java.lang.NoClassDefFoundError: java.nio.channels.spi.SelectorProvider is a restricted class. Please see the Google App Engine developer's guide for more details. 
at com.google.apphosting.runtime.security.shared.stub.java.nio.channels.spi.SelectorProvider.<clinit>(SelectorProvider.java) 
at io.netty.channel.nio.NioEventLoopGroup.<init>(NioEventLoopGroup.java:59) 
at io.grpc.netty.Utils$DefaultEventLoopGroupResource.create(Utils.java:187) 
at io.grpc.netty.Utils$DefaultEventLoopGroupResource.create(Utils.java:171) 
at io.grpc.internal.SharedResourceHolder.getInternal(SharedResourceHolder.java:124) 
at io.grpc.internal.SharedResourceHolder.get(SharedResourceHolder.java:94) 
at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:311) 
at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:280) 
at io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:230) 
at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:239) 
at com.google.api.gax.grpc.InstantiatingChannelProvider.createChannel(InstantiatingChannelProvider.java:120) 
at com.google.api.gax.grpc.InstantiatingChannelProvider.getChannel(InstantiatingChannelProvider.java:107) 
at com.google.api.gax.grpc.ProviderManager.getChannel(ProviderManager.java:107) 
at com.google.api.gax.grpc.ChannelAndExecutor.create(ChannelAndExecutor.java:68) 
at com.google.api.gax.grpc.ServiceApiSettings.getChannelAndExecutor(ServiceApiSettings.java:82) 
at com.google.cloud.pubsub.spi.v1.PublisherApi.<init>(PublisherApi.java:203) 
at com.google.cloud.pubsub.spi.v1.PublisherApi.create(PublisherApi.java:194) 
at com.google.cloud.pubsub.spi.DefaultPubSubRpc.<init>(DefaultPubSubRpc.java:168) 
at com.google.cloud.pubsub.PubSubOptions$DefaultPubSubRpcFactory.create(PubSubOptions.java:69) 
at com.google.cloud.pubsub.PubSubOptions$DefaultPubSubRpcFactory.create(PubSubOptions.java:63) 
at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:478) 
at com.google.cloud.pubsub.PubSubImpl.<init>(PubSubImpl.java:115) 
at com.google.cloud.pubsub.PubSubOptions$DefaultPubSubFactory.create(PubSubOptions.java:44) 
at com.google.cloud.pubsub.PubSubOptions$DefaultPubSubFactory.create(PubSubOptions.java:39) 
at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:465) 

据我所知,GAE不允许java.nio代码,但我不知道nd Google如何为我们提供一个不能在自己的系统上运行的PubSub API库。

我错过了什么吗?一些JAR不匹配?我找不到任何可疑的JAR冲突。我怎样才能使这个工作?

回答

0

Robert,谢谢你报告。解决问题。同时,请使用Google API Client Libraries for Java。这里有一个指向Pub/Sub client的链接。

+0

是的,这对我有用,谢谢!事实上,在我尝试移动新图书馆之前,我已经在使用这个图书馆。 –

+0

这个问题在某个地方有报道,所以我们可以在AE中使用较新的PubSub库时跟踪并得到通知? –