2017-05-30 81 views
-1

使用STS,我创建了一个简单的Spring入门项目,并尝试添加dependy杰克逊XML支持春季启动:将XML支持

见:https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring

无论扭曲我尝试(改变弹簧启动发行版本)我总是得到同样的错误

Caused by: java.lang.ClassNotFoundException: org.codehaus.stax2.XMLInputFactory2 
    at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.8.0_91] 
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_91] 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[na:1.8.0_91] 
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_91] 
    ... 73 common frames omitted 

在STS,whem看着解决依赖,我可以清楚地看到,org.codehaus.woodstox/stax2-API存在。

resolved dependencies

的pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.text</groupId> 
    <artifactId>HelloJackson</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>HelloJackson</name> 
    <description>HelloWorld</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.6.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>com.fasterxml.jackson.dataformat</groupId> 
      <artifactId>jackson-dataformat-xml</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 


</project> 
+0

**我可以清楚地看到org.codehaus.woodstox/stax2-api存在。** 为什么我找不到它? – Salman

+0

查看添加的图像 – Filip

+0

是的,但请在您的pom中添加依赖项。我已经为你写了一个答案。 – Salman

回答

0

这意味着类在编译时不需要,但它在运行时是必需的,(也可以是其它的依赖性使用它)。 尝试添加到POM文件

<!-- https://mvnrepository.com/artifact/org.codehaus.woodstox/stax2-api --> 
<dependency> 
    <groupId>org.codehaus.woodstox</groupId> 
    <artifactId>stax2-api</artifactId> 
    <version>3.0.1</version> 
</dependency> 
+0

它工作正常,但我不确定为什么需要重新添加。它已经是一个依赖项(依赖项的依赖) – Filip

+0

正如我从图像中可以看到的那样,是的,它已经存在于依赖项列表中,但是您可以看到它是编译范围的(方括号[compile]之间的编译词)意味着它只用于编译,而不用于运行时,所以你可以改变已经添加的依赖的范围,它会运行。 –

+0

好吧,我的理解是编译范围包含在运行时类路径中:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope – Filip

0

好像问题是,JAR已损坏。添加另一个版本修复了这个问题,因为它强制下载另一个JAR。我清除了当地的回购协议,并且所有的东西都能正常工作