java.lang.NoSuchFieldError: INSTANCE

java.lang.NoSuchFieldError: INSTANCE异常解决方法

原因: 启动的项目jar包冲突,具体来说就是相同的jar包至少存在两个不同版本,例如如下日志:

Caused by: java.lang.NoSuchFieldError: INSTANCE  
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)

解决方法:(背景:maven项目并且在第三方外部jar依赖)

   ❶ 找到DefaultHttpRequestWriterFactory所在jar,并记录下jar所在maven坐标,例如: DefaultHttpRequestWriterFactory所在jar包坐标如下:
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>

   ❷ pom.xml所在目录执行 mvn dependency:tree -Dverbose -Dincludes=org.apache.httpcomponents:httpclient
        $ mvn dependency:tree -Dverbose -Dincludes=org.apache.httpcomponents:httpcore
        [INFO] Scanning for projects... 
        [INFO] -------------------< azkaban.execapp:azkaban-server >-------------------
        [INFO] Building azkaban-server 3.9.0.0
        [INFO] --------------------------------[ jar ]---------------------------------
        [INFO] --- maven-dependency-plugin:2.8:tree (default-cli)---
        [INFO] \- org.apache.hadoop:hadoop-common:jar:2.7.3:compile
        [INFO]    \- net.java.dev.jets3t:jets3t:jar:0.9.0:compile
        [INFO]       \- org.apache.httpcomponents:httpcore:jar:4.1.2:compile
        [INFO] ------------------------------------------------------------------------
        [INFO] BUILD SUCCESS
从结果可以得知hadoop-common.jar依赖传递了一个httpcore:jar,版本为4.1.2,而我的第三方外部依赖也存在一个httpcore.jar,版本为4.5,所以出错

   ❸ 排除依赖

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.httpcomponents</groupId>
                    <artifactId>httpcore</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    ❹ 如果不是maven环境,只能人为一个个的jar包去排除,祝您好运!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值