首页 > 解决方案 > 在 Mavne 中查找导致依赖下载的 jar

问题描述

我的一个应用程序有问题。调用HttpClientBuilder.create().build();会抛出错误:java.lang.NoSuchFieldError:INSTANCE. 我能够确定问题是由 org.apache.httpcomponents.httpcore 的版本冲突引起的。即使我在我的 pom 中明确添加了对新版本的依赖,当我在运行时检查类路径时,它仍然使用旧版本的库显示它。

到目前为止,我为追踪依赖源所做的每一次尝试都是空的。如果我执行

mvn dependency:tree -Dincludes=*:httpcore

我得到结果

[INFO] com.tura.jetty:eyerep-data:war:0.0.1-SNAPSHOT
[INFO] \- org.apache.httpcomponents:httpcore:jar:4.3.3:compile

日食也是如此。如果我打开我的 pom 并查看依赖层次结构,那么唯一显示的 jar 版本是我在 pom.xml 中列为依赖项的版本。同时,我知道旧版本正在被拉入。如果我添加

ClassLoader classLoader = TestExport.class.getClassLoader();
URL resource = classLoader.getResource("org/apache/http/message/BasicLineFormatter.class");
System.out.println(resource);

到我的应用程序我得到输出 jar:file:/Users/foo/.m2/repository/org/apache/httpcomponents/httpcore/4.1.2/httpcore-4.1.2.jar!/org/apache/http/message/BasicLineFormatter.class 此外,如果我进入 .m2 文件夹,删除 httpcore 的本地文件夹,然后运行mvn clean install我可以从日志输出中看到它正在重新下载 jar 的 4.1.2 版本。

我对此束手无策。我还能做些什么来确定我的项目的哪些依赖项导致了这个冲突?

标签: javamavendependenciesapache-httpclient-4.x

解决方案


推荐阅读