在 Intellij 上启动 Spring 启动应用程序,尝试连接 GCP 的 BigTable 时,我们收到以下错误:java.lang.NoClassDefFoundError: io/grpc/internal/BaseDnsNameResolverProvider
这是堆栈跟踪:
...嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [com.google.cloud.bigtable.data.v2.BigtableDataClient]:工厂方法“bigtableDataClient”抛出异常;嵌套异常是 java.lang.NoClassDefFoundError: io/grpc/internal/BaseDnsNameResolverProvider
在 org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:797) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
在 org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:227) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1358) ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE]
....
Gradle 中的导入是: implementation 'com.google.cloud:google-cloud-bigtable:1.13.0'
更新:
我试图专门使用不同的 grpc-alt
版本:compile group: 'io.grpc', name: 'grpc-alts', version: '1.29.0'
但它没有帮助。
如果我尝试从 bootRun
的 Gradle 命令运行应用程序它旋转起来没有问题。只有当尝试在 Intellij 中启动它时,它才会面临同样的问题。
最佳答案
这是一个解决方法:对所有 grpc
使用 1.28.1 版成分。
虽然目前还有其他版本可用(1.29.0、1.30.0、1.30.1、1.30.2 per https://mvnrepository.com/artifact/io.grpc),但它们表现出相同的错误 – java.lang.NoClassDefFoundError: io/grpc/internal/BaseDnsNameResolverProvider
– 在我的本地测试中。
关于java - ClassNotFoundException : io. grpc.internal.BaseDnsNameResolverProvider 尝试从 Windows 创建 BigtableDataClient 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62690827/