Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用TestRestTemplate Jar冲突测试Spring Boot Jersey Rest API_Java_Rest_Maven_Spring Boot - Fatal编程技术网

Java 无法使用TestRestTemplate Jar冲突测试Spring Boot Jersey Rest API

Java 无法使用TestRestTemplate Jar冲突测试Spring Boot Jersey Rest API,java,rest,maven,spring-boot,Java,Rest,Maven,Spring Boot,任何帮助都将不胜感激。快速回答 对pom.xml的快速检查表明,特定的依赖关系org.owasp.esapi:esapi将旧的3.1版本的httpclient拉入。尝试将排除部分添加到此依赖项,如下所述。如果这没有帮助,请相应地遍历依赖关系树 完整答案 在项目根文件夹下运行以下命令 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot

任何帮助都将不胜感激。

快速回答

pom.xml
的快速检查表明,特定的依赖关系
org.owasp.esapi:esapi
将旧的
3.1
版本的httpclient拉入。尝试将排除部分添加到此依赖项,如下所述。如果这没有帮助,请相应地遍历依赖关系树

完整答案

在项目根文件夹下运行以下命令

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.2.RELEASE</version>
</parent>
<dependencies>
    <!-- Spring dependencies -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.18.1</version>
    </dependency>
    <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr-complete</artifactId>
        <version>3.5.2</version>
    </dependency>
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.3.2</version>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-validator</groupId>
        <artifactId>commons-validator</artifactId>
        <version>1.4.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-multipart</artifactId>
        <version>1.19.3</version>
    </dependency>
    <dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.7.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr-complete</artifactId>
        <version>3.5.2</version>
    </dependency>
    <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>2.8.6</version>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.9.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.4</version>
    </dependency>
    <dependency>
        <groupId>org.owasp.esapi</groupId>
        <artifactId>esapi</artifactId>
        <version>2.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
    </dependency>
    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-jcs-jcache</artifactId>
        <version>2.0-beta-1</version>
    </dependency>
    <dependency>
        <groupId>org.reflections</groupId>
        <artifactId>reflections</artifactId>
        <version>0.9.9</version>
    </dependency>
    <dependency>
        <groupId>com.codahale.metrics</groupId>
        <artifactId>metrics-healthchecks</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
    </dependency>
</dependencies>
这将打印项目的maven依赖关系树,其中包含所有工件id为commons httpclient的拉式可传递依赖关系,例如:

mvn dependency:tree -Dincludes=commons-httpclient
然后,您可以确定出现错误版本的
httpclient
的原因(例如,我们的示例是
org.owasp.esapi:esapi
),然后您可以通过修改pom.xml隐式排除该可传递依赖项:

[INFO] your:project:jar:1.0-SNAPSHOT
[INFO] \- org.owasp.esapi:esapi:jar:2.1.0:compile
[INFO]    \- org.owasp.antisamy:antisamy:jar:1.4.3:compile
[INFO]       \- commons-httpclient:commons-httpclient:jar:3.1:compile
甚至可以在没有参数的情况下通过普通树输出调用
mvn dependency:tree

最后,您可以显式地向pom.xml添加所需的依赖项,找到并排除错误的版本,如上所述:

mvn dependency:tree -Dincludes=*http*

你能在调用restTemplate并检查/共享控制台输出之前将其放入你的
contextLoads()
中吗?

我遵循了你的建议。。。我删除了httpclient的其他传递关系,并按照您的建议显式定义了httpclient。。。但问题依然存在。。同样的错误由于某种原因,依赖项没有被正确下载,这就是为什么maven不能正确地选择排除。请尝试清理本地存储库(注意:它将完全删除maven local repo!),方法是使用
mvn dependency:purge local repository
,然后使用
mvn clean buld
重新下载JAR。顺便问一下,您是否可以再次检查您的测试类路径是否没有IDE添加的依赖项?也就是说,一些JAR是通过IDE功能导入到您的项目中的,而不是通过maven导入的?有点像全球图书馆之类的我敢肯定。。我已经移除了其他可传递的罐子。。。在依赖关系层次结构中,httpclient过滤器之后只有一个jar-httpclient:4.5.2。我还尝试了一个干净和建设。。。同样的错误检查为“http”筛选的依赖关系树的屏幕截图,我添加了“更新”部分,其中描述了如何将所有测试类路径jar打印到控制台,以便查看哪些httpclient jar实际上已就位。您可以尝试一下并通过共享控制台输出吗?
[INFO] your:project:jar:1.0-SNAPSHOT
[INFO] \- org.owasp.esapi:esapi:jar:2.1.0:compile
[INFO]    \- org.owasp.antisamy:antisamy:jar:1.4.3:compile
[INFO]       \- commons-httpclient:commons-httpclient:jar:3.1:compile
        <dependency>
            <groupId>org.owasp.esapi</groupId>
            <artifactId>esapi</artifactId>
            <version>2.1.0</version>
            <!-- change starts here -->
            <exclusions>
                <exclusion>
                    <groupId>commons-httpclient</groupId>
                    <artifactId>commons-httpclient</artifactId>
                </exclusion>
            </exclusions>
            <!-- change ends here -->
        </dependency>
mvn dependency:tree -Dincludes=*http*
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.5.2</version>
</dependency>
ClassLoader cl = ClassLoader.getSystemClassLoader();

URL[] urls = ((URLClassLoader)cl).getURLs();

for(URL url: urls){
    System.out.println(url.getFile());
}