在Azure上从Linux容器运行Google Cloud Vision

在Azure上从Linux容器运行Google Cloud Vision,azure,tomcat,google-cloud-vision,Azure,Tomcat,Google Cloud Vision,使用Windows服务器、Tomcat 8和Java 7,我成功地使用Google Cloud Vision API对文档进行OCR 当我使用Tomcat 9和Java 8从Azure上的Linux容器执行相同的过程(使用相同的库等)时,我会得到以下结果: java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been > properly configured. > at > io.grpc.netty.Grp

使用Windows服务器、Tomcat 8和Java 7,我成功地使用Google Cloud Vision API对文档进行OCR

当我使用Tomcat 9和Java 8从Azure上的Linux容器执行相同的过程(使用相同的库等)时,我会得到以下结果:

java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been > properly configured. > at >
 io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:162) > at 
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:136) > at 
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:124) > at 
io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:94) > at > 
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.<init>(NettyChannelBuilder.java:521) > 2019-10-24T13:33:37.831210199Z at > 
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.<init>(NettyChannelBuilder.java:514) > 2019-10-24T13:33:37.832461409Z at > 
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:453) > at > 
io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:312) > at > 
io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:324) > at > 
com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:165) > 2019-10-24T13:33:37.834701725Z at > 
com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:130) > 2019-10-24T13:33:37.835210729Z at > 
com.google.api.gax.rpc.ClientContext.create(ClientContext.java:122) > at > 
com.google.cloud.vision.v1.stub.GrpcImageAnnotatorStub.create(GrpcImageAnnotatorStub.java:62) > at > 
com.google.cloud.vision.v1.ImageAnnotatorSettings.createStub(ImageAnnotatorSettings.java:101) > at > 
com.google.cloud.vision.v1.ImageAnnotatorClient.<init>(ImageAnnotatorClient.java:130) > at > 
com.google.cloud.vision.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:111) > at > 
com.google.cloud.vision.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:102)
java.lang.IllegalArgumentException:Jetty ALPN/NPN未被>正确配置。>在>
io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:162)>
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:136)>
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:124)>
io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:94)>at>
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.(NettyChannelBuilder.java:521)>2019-10-24T13:33:37.831210199Z at>
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.(NettyChannelBuilder.java:514)>2019-10-24T13:33:37.832461409Z at>
NettyChannelBuilder$NettyTransportFactory.(NettyChannelBuilder.java:453)>at>
io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:312)>at>
io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:324)>at>
com.google.api.gax.grpc.instantinggrpcchannelprovider.createChannel(instantinggrpcchannelprovider.java:165)>2019-10-24T13:33:37.834701725Z at>
com.google.api.gax.grpc.instantinggrpcchannelprovider.getTransportChannel(instantinggrpcchannelprovider.java:130)>2019-10-24T13:33:37.835210729Z at>
com.google.api.gax.rpc.ClientContext.create(ClientContext.java:122)>at>
com.google.cloud.vision.v1.stub.GrpcImageAnnotatorStub.create(GrpcImageAnnotatorStub.java:62)>at>
com.google.cloud.vision.v1.ImageAnnotatorSettings.createStub(ImageAnnotatorSettings.java:101)>at>
com.google.cloud.vision.v1.ImageAnnotatorClient.(ImageAnnotatorClient.java:130)>at>
com.google.cloud.vision.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:111)>at>
com.google.cloud.vision.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:102)
有什么想法吗

我的GOOGLE\u应用程序\u凭据设置正确:

从我的研究看来,可能存在某种兼容性问题,可能与我正在使用的netty版本有关


我发现了这个问题。LinuxWeb应用被配置为使用Java8,而我的Eclipse环境使用jdk-12.0.2

当我将Web应用程序容器更改为Java 11(和Tomcat 9.0)时,它就工作了

感谢@Kolban提供以下内容:

java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been > properly configured. > at >
 io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:162) > at 
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:136) > at 
io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:124) > at 
io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:94) > at > 
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.<init>(NettyChannelBuilder.java:521) > 2019-10-24T13:33:37.831210199Z at > 
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory$DefaultNettyTransportCreationParamsFilterFactory.<init>(NettyChannelBuilder.java:514) > 2019-10-24T13:33:37.832461409Z at > 
io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.<init>(NettyChannelBuilder.java:453) > at > 
io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:312) > at > 
io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:324) > at > 
com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:165) > 2019-10-24T13:33:37.834701725Z at > 
com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:130) > 2019-10-24T13:33:37.835210729Z at > 
com.google.api.gax.rpc.ClientContext.create(ClientContext.java:122) > at > 
com.google.cloud.vision.v1.stub.GrpcImageAnnotatorStub.create(GrpcImageAnnotatorStub.java:62) > at > 
com.google.cloud.vision.v1.ImageAnnotatorSettings.createStub(ImageAnnotatorSettings.java:101) > at > 
com.google.cloud.vision.v1.ImageAnnotatorClient.<init>(ImageAnnotatorClient.java:130) > at > 
com.google.cloud.vision.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:111) > at > 
com.google.cloud.vision.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:102)
如果您使用的是32位操作系统,那么使用Java 11+可能是最好的选择 最简单的解决方案,因为ALPN是在Java9中添加到Java的。32位上的If 在Windows中,Conscrypt是一个选项。否则你需要建立你自己的 netty tcnative的32位版本


看起来这些可能有用。。。和@Kolban的可能副本。谢谢-在发布我的问题之前,我看到了其中的大部分。我认为我的问题更侧重于确定为什么它在Windows环境下工作,而不是在Linux环境下工作,特别是当所使用的软件更为更新时。