azure - 从 Azure 上的 Linux 容器运行 Google Cloud Vision
问题描述
使用 Windows Server、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)
有任何想法吗?
我的 GOOGLE_APPLICATION_CREDENTIALS 设置正确:
根据我的研究,似乎可能存在某种兼容性问题,可能与我正在使用的 netty 版本有关。
解决方案
我发现了问题。Linux Web 应用程序配置为使用 Java 8,而我的 Eclipse 环境具有 jdk-12.0.2。
当我将 Web Apps 容器更改为 Java 11(和 Tomcat 9.0)时,它就可以工作了!
感谢@Kolban 提供故障排除页面的链接,其中包括以下内容:
如果您在 32 位操作系统上,使用 Java 11+ 可能是最简单的解决方案,因为 ALPN 是在 Java 9 中添加到 Java 中的。如果在 32 位 Windows 上,Conscrypt 是一个选项。否则,您需要构建自己的 32 位版本的 netty-tcnative。
推荐阅读
- windows - Powershell 脚本 - 重新安装应用程序
- html - 模糊的标志 - 导航栏
- javascript - reactjs 中的无效钩子调用(它工作正常,但是当我在 Button 标签中使用 b 大写时,它显示错误)
- c# - 在数据库优先方法中搭建脚手架时的实体框架上下文和模型继承
- python - 如何通过使用带有 r 或 python 的 json 将 HTML 转换为数据框?
- reactjs - @atlaskit/tree 和 React,将引用正确转发到子组件
- javascript - 尝试执行 onLoad 以呈现一些信息,但没有任何反应
- git - 将分支合并到main后,为什么删除本地分支,然后更新项目,而不是删除远程分支?
- java - break 语句不起作用并添加了额外的 System.out.print;
- android - APK 的 META-INF 文件夹中的“.version”文件有什么作用?