Java 无法解析对URLUtil的依赖关系,存在冲突的需求

Java 无法解析对URLUtil的依赖关系,存在冲突的需求,java,maven,Java,Maven,我在尝试编译项目时遇到以下错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/util/URIUtil at org.apache.commons.vfs2.provider.URLFileName.getPathQueryEncoded(URLFileName.java:91) at org.apache.commons.vfs2.provide

我在尝试编译项目时遇到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/util/URIUtil
    at org.apache.commons.vfs2.provider.URLFileName.getPathQueryEncoded(URLFileName.java:91)
    at org.apache.commons.vfs2.provider.URLFileName.getURIEncoded(URLFileName.java:161)
    at org.apache.commons.vfs2.provider.url.UrlFileObject.createURL(UrlFileObject.java:74)
    at org.apache.commons.vfs2.provider.url.UrlFileObject.doAttach(UrlFileObject.java:63)
    at org.apache.commons.vfs2.provider.AbstractFileObject.attach(AbstractFileObject.java:1505)
    at org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:489)
    .... (More project-scope traces)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.httpclient.util.URIUtil
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 13 more
我的项目中有以下maven依赖项:

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.3.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-vfs2</artifactId>
        <version>2.0</version>
    </dependency>

org.apache.httpcomponents
httpclient
4.3.4
org.apache.commons
commons-vfs2
2
我绝对必须依赖HttpClient版本4.3.4或更高版本,因为我们在以前的版本中遇到了其他依赖项和各种错误。经过一番研究,我发现在HttpClient 3.1之后,有问题的类(URLUtil)已从HttpClient中删除


有没有办法解决这个问题?或者我可以用另一个库来代替vfs2?我正在尝试使用用户/密码和密钥身份验证方案在sftp上写入文件。

事实证明,HttpClient的3.x和4.x版本的构件是不同的。我所要做的就是包括:

    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency>

commons httpclient
commons httpclient
3.1

我真傻,以为它们会相互覆盖。

你应该告诉我们为什么“我绝对必须依赖HttpClient 4.3.4或更高版本。”补充了一点说明。这个库尤其令人头痛,我们终于找到了一个可以与所有其他依赖项一起工作的版本,并且没有严重的bug。