Hive JDBC driver 因为jar冲突出现java.lang.NoSuchMethodError或者java.lang.AbstractMethodError导致连接hive失败

用jdbc driver 2.3.9 连接hive失败,错误大概如下。

java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder

java.lang.NoSuchMethodError: javax.ws.rs.core.MultivaluedMap.addAll(Ljava/lang/Object;[Ljava/lang/Object;)V

原因定位

1.首先在代码中加入System.out.println(当前类名.class.getClassLoader().getResource("javax/ws/rs/core/UriBuilder.class"));来定位程序加载了哪个api

2.将hive driver的依赖放在pom.xml文件的最前面,加载

jar:file:/C:/Users/yangh/.m2/repository/com/sun/jersey/jersey-core/1.9/jersey-core-1.9.jar!/javax/ws/rs/core/UriBuilder.class
出现错误
java.lang.NoSuchMethodError: javax.ws.rs.core.MultivaluedMap.addAll(Ljava/lang/Object;[Ljava/lang/Object;)V
说明不能用
com/sun/jersey/jersey-core/1.9/jersey-core-1.9.jar

3.将hive driver的依赖放在pom.xml文件的最后,加载

jar:file:/C:/Users/yangh/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0.1/javax.ws.rs-api-2.0.1.jar!/javax/ws/rs/core/UriBuilder.class
出现错误
java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder

说明用javax.ws.rs-api-2.0.1.jar也不行,但是我的程序中只能用其中一个。

这个时候觉得有可能是jar冲突。添加hive jdbc driver依赖时,可能自动加入了jersey-core-1.9.jar。

4.在hive jdbc driver依赖中把jersey-core-1.9.jar相关加入到inclusion,使之不加载。再次连接成功。

附pom.xml完整的hive jdbc driver依赖。

<dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>2.3.9</version>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.jersey</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.sun.jersey.contribs</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
View Code

 

posted @ 2021-12-21 15:10  panda4671  阅读(939)  评论(0编辑  收藏  举报