java.lang.NoClassDefFoundError

      Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。

      项目中遇到NoClassDefFoundError。

      维护旧项目时,更新了httpclient相关jar包,但是并没有删除相关的旧jar包。系统第一次执行到httpclient相关代码时,报如下错误:

Caused by: java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:151)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:977)
at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:56)

       第二次执行httpclient相关代码时,才报NoClassDefFoundError。第一次报错就已经表明,再做实例化操作时,缺少了相关字段,即是虚拟机还是在引用旧有jar包的相关类。

posted @ 2019-10-22 15:53  bruce.chen  阅读(628)  评论(0)    收藏  举报