Maven集成google-cloud-bigquery运行报isMtls()方法不存在异常
问题描述
本问题并非已有同类NoSuchMethodError问题的重复问题。
当前pom.xml仅配置两项业务依赖,程序运行时抛出如下异常:
java.lang.NoSuchMethodError: 'boolean com.google.api.client.http.HttpTransport.isMtls()'
异常触发位置为com.google.api.services.bigquery.Bigquery$Builder.chooseEndpoint(Bigquery.java:6381)
当前pom配置如下:
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.cloud</groupId> <artifactId>libraries-bom</artifactId> <version>${google.cloud.bom.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.***.sharepoint</groupId> <artifactId>sharepoint-util</artifactId> <version>2.1</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-bigquery</artifactId> </dependency> </dependencies>
已检查项目依赖树,未发现标注的版本冲突jar包,完整依赖树如下。曾尝试为相关依赖配置provided作用域,但会导致BigQuery相关类导入失败,抛出NoClassDefFoundError错误。
[INFO] Scanning for projects... [INFO] [INFO] --------------< AA>-------------- [INFO] Building AA 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ AA --- [INFO] *******g:jar:1.0-SNAPSHOT [INFO] +- com.***.sharepoint:sharepoint-util:jar:2.1:compile [INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.4:compile [INFO] | | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile [INFO] | +- org.json:json:jar:20180813:compile [INFO] | +- org.slf4j:slf4j-api:jar:1.7.5:compile [INFO] | +- org.apache.httpcomponents:httpclient:jar:4.5.6:compile [INFO] | +- javax.mail:mail:jar:1.4.7:compile [INFO] | | \- javax.activation:activation:jar:1.1:compile [INFO] | +- com.google.code.gson:gson:jar:2.8.5:compile [INFO] | +- org.apache.commons:commons-lang3:jar:3.9:compile [INFO] | +- commons-io:commons-io:jar:2.6:compile [INFO] | +- com.squareup.okhttp:okhttp:jar:2.7.5:compile [INFO] | | \- com.squareup.okio:okio:jar:1.6.0:compile [INFO] | +- commons-cli:commons-cli:jar:1.4:compile [INFO] | +- org.apache.httpcomponents:httpmime:jar:4.3.1:compile [INFO] | +- com.google.guava:guava:jar:30.1.1-jre:compile [INFO] | +- com.google.cloud:google-cloud-storage:jar:2.0.1:compile [INFO] | | +- com.google.apis:google-api-services-storage:jar:v1-rev20210127-1.32.1:compile [INFO] | | \- com.google.auto.value:auto-value-annotations:jar:1.8.2:compile [INFO] | \- org.apache.hadoop:hadoop-common:jar:2.7.3.2.6.5.0-292:compile [INFO] | +- org.apache.hadoop:hadoop-annotations:jar:2.7.3.2.6.5.0-292:compile [INFO] | +- org.apache.commons:commons-math3:jar:3.1.1:compile [INFO] | +- xmlenc:xmlenc:jar:0.52:compile [INFO] | +- commons-net:commons-net:jar:3.1:compile [INFO] | +- commons-collections:commons-collections:jar:3.2.2:compile [INFO] | +- javax.servlet:servlet-api:jar:2.5:compile [INFO] | +- org.mortbay.jetty:jetty:jar:6.1.26.hwx:compile [INFO] | +- org.mortbay.jetty:jetty-util:jar:6.1.26.hwx:compile [INFO] | +- org.mortbay.jetty:jetty-sslengine:jar:6.1.26.hwx:compile [INFO] | +- javax.servlet.jsp:jsp-api:jar:2.1:runtime [INFO] | +- com.sun.jersey:jersey-core:jar:1.9:compile [INFO] | +- com.sun.jersey:jersey-json:jar:1.9:compile [INFO] | | +- org.codehaus.jettison:jettison:jar:1.1:compile [INFO] | | +- com.sun.xml.bind:jaxb-impl:jar:2.2.3-1:compile [INFO] | | | \- javax.xml.bind:jaxb-api:jar:2.2.2:compile [INFO] | | | \- javax.xml.stream:stax-api:jar:1.0-2:compile [INFO] | | +- org.codehaus.jackson:jackson-jaxrs:jar:1.8.3:compile [INFO] | | \- org.codehaus.jackson:jackson-xc:jar:1.8.3:compile [INFO] | +- com.sun.jersey:jersey-server:jar:1.9:compile [INFO] | | \- asm:asm:jar:3.1:compile [INFO] | +- log4j:log4j:jar:1.2.17:compile [INFO] | +- net.java.dev.jets3t:jets3t:jar:0.9.0:compile [INFO] | | \- com.jamesmurty.utils:java-xmlbuilder:jar:0.4:compile [INFO] | +- com.microsoft.azure:azure-storage:jar:5.4.0:compile [INFO] | | \- com.microsoft.azure:azure-keyvault-core:jar:0.8.0:compile [INFO] | +- commons-lang:commons-lang:jar:2.6:compile [INFO] | +- commons-configuration:commons-configuration:jar:1.6:compile [INFO] | | +- commons-digester:commons-digester:jar:1.8:compile [INFO] | | | \- commons-beanutils:commons-beanutils:jar:1.7.0:compile [INFO] | | \- commons-beanutils:commons-beanutils-core:jar:1.8.0:compile [INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile [INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile [INFO] | +- org.apache.avro:avro:jar:1.7.4:compile [INFO] | | +- com.thoughtworks.paranamer:paranamer:jar:2.3:compile [INFO] | | \- org.xerial.snappy:snappy-java:jar:1.0.4.1:compile [INFO] | +- org.apache.hadoop:hadoop-auth:jar:2.7.3.2.6.5.0-292:compile [INFO] | | +- com.nimbusds:nimbus-jose-jwt:jar:4.41.1:compile [INFO] | | | \- com.github.stephenc.jcip:jcip-annotations:jar:1.0-1:compile [INFO] | | +- net.minidev:json-smart:jar:1.3.1:compile [INFO] | | +- org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15:compile [INFO] | | | +- org.apache.directory.server:apacheds-i18n:jar:2.0.0-M15:compile [INFO] | | | +- org.apache.directory.api:api-asn1-api:jar:1.0.0-M20:compile [INFO] | | | \- org.apache.directory.api:api-util:jar:1.0.0-M20:compile [INFO] | | \- org.apache.curator:curator-framework:jar:2.7.1:compile [INFO] | +- com.jcraft:jsch:jar:0.1.54:compile [INFO] | +- org.apache.curator:curator-client:jar:2.7.1:compile [INFO] | +- org.apache.curator:curator-recipes:jar:2.7.1:compile [INFO] | +- org.apache.htrace:htrace-core:jar:3.1.0-incubating:compile [INFO] | +- org.apache.zookeeper:zookeeper:jar:3.4.6.2.6.5.0-292:compile [INFO] | | \- io.netty:netty:jar:3.7.0.Final:compile [INFO] | \- org.apache.commons:commons-compress:jar:1.4.1:compile [INFO] | \- org.tukaani:xz:jar:1.0:compile [INFO] \- com.google.cloud:google-cloud-bigquery:jar:2.1.1:compile [INFO] +- com.google.cloud:google-cloud-core:jar:2.0.5:compile [INFO] +- com.google.protobuf:protobuf-java-util:jar:3.17.3:compile [INFO] +- com.google.api.grpc:proto-google-common-protos:jar:2.3.2:compile [INFO] +- com.google.api.grpc:proto-google-iam-v1:jar:1.0.14:compile [INFO] +- com.google.auth:google-auth-library-credentials:jar:1.0.0:compile [INFO] +- com.google.http-client:google-http-client-gson:jar:1.39.2:compile [INFO] +- com.google.protobuf:protobuf-java:jar:3.17.3:compile [INFO] +- com.google.cloud:google-cloud-core-http:jar:2.0.5:compile [INFO] +- com.google.api-client:google-api-client:jar:1.32.1:compile [INFO] +- com.google.oauth-client:google-oauth-client:jar:1.31.5:compile [INFO] +- com.google.http-client:google-http-client-apache-v2:jar:1.39.2:compile [INFO] +- com.google.http-client:google-http-client-appengine:jar:1.39.2:compile [INFO] +- com.google.api:gax-httpjson:jar:0.86.0:compile [INFO] +- io.opencensus:opencensus-api:jar:0.28.0:compile [INFO] +- io.grpc:grpc-context:jar:1.39.0:compile [INFO] +- io.opencensus:opencensus-contrib-http-util:jar:0.28.0:compile [INFO] +- com.google.http-client:google-http-client-jackson2:jar:1.39.2:compile [INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.12.4:compile [INFO] +- com.google.http-client:google-http-client:jar:1.39.2:compile [INFO] +- commons-logging:commons-logging:jar:1.2:compile [INFO] +- commons-codec:commons-codec:jar:1.15:compile [INFO] +- org.apache.httpcomponents:httpcore:jar:4.4.14:compile [INFO] +- com.google.j2objc:j2objc-annotations:jar:1.3:compile [INFO] +- org.checkerframework:checker-compat-qual:jar:2.5.5:compile [INFO] +- com.google.auth:google-auth-library-oauth2-http:jar:1.0.0:compile [INFO] +- com.google.code.findbugs:jsr305:jar:3.0.2:compile [INFO] +- com.google.apis:google-api-services-bigquery:jar:v2-rev20210726-1.32.1:compile [INFO] +- com.google.api:api-common:jar:2.0.1:compile [INFO] +- javax.annotation:javax.annotation-api:jar:1.3.2:compile [INFO] +- com.google.guava:failureaccess:jar:1.0.1:compile [INFO] +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile [INFO] +- org.checkerframework:checker-qual:jar:3.8.0:compile [INFO] +- com.google.api:gax:jar:2.1.0:compile [INFO] +- org.threeten:threetenbp:jar:1.5.1:compile [INFO] \- com.google.errorprone:error_prone_annotations:jar:2.8.1:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.971 s [INFO] Finished at: 2022-06-07T22:35:29+05:30 [INFO] ------------------------------------------------------------------------ [WARNING] The requested profile "localDeploy" could not be activated because it does not exist.
问题根因
依赖树显示sharepoint-util传递引入了google-cloud-storage:2.0.1,该版本携带的Google HTTP客户端相关组件版本与BigQuery 2.1.1要求的版本不兼容。虽然依赖树表面显示google-http-client版本为1.39.2,但实际打包时旧版本传递依赖的类被优先加载,导致isMtls()方法找不到。另外pom中libraries-bom使用了未定义的版本占位符,BOM的统一版本管控作用未完全生效,无法自动矫正传递依赖的版本冲突。
解决步骤
- 首先在pom的
properties节点明确定义BOM版本,选择和BigQuery 2.1.1匹配的20.7.0版本即可:
<properties> <google.cloud.bom.version>20.7.0</google.cloud.bom.version> </properties>
- 对
sharepoint-util中传递引入的所有Google相关依赖做排除,避免旧版本混入类路径:
<dependency> <groupId>com.***.sharepoint</groupId> <artifactId>sharepoint-util</artifactId> <version>2.1</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-storage</artifactId> </exclusion> <exclusion> <groupId>com.google.http-client</groupId> <artifactId>*</artifactId> </exclusion> <exclusion> <groupId>com.google.api-client</groupId> <artifactId>*</artifactId> </exclusion> <exclusion> <groupId>com.google.oauth-client</groupId> <artifactId>*</artifactId> </exclusion> <exclusion> <groupId>com.google
相关产品推荐
相关产品推荐

