JBoss8:错误UT005023-URL的异常处理请求

fid*_*dle 1 wildfly wildfly-8

我在JBoss 8服务器上收到以下错误。

17:36:07,482 ERROR [io.undertow.request] (default task-22) UT005023: Exception handling request to /user/XMLPreviewer: org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com/sun/org/apache/xml/internal/serialize/XMLSerializer
Run Code Online (Sandbox Code Playgroud)

我的pom中具有以下依赖项:

    <dependency>
        <groupId>javax.xml</groupId>
        <artifactId>jaxp-api</artifactId>
        <version>1.4.2</version>
    </dependency>
    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.11.0</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
            <version>1.4.01</version>
            <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <version>1.4.01</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.parsers</groupId>
        <artifactId>jaxp-api</artifactId>
        <version>1.4.5</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

Ste*_*e C 5

您正在寻找麻烦,包括应用程序中的所有jar。

这些jars提供的API和实现存在于JDK(最早可以追溯到Java 5)中,如果您使用它们而不是向应用程序添加其他(可能是过时的)版本,将会发现生活变得更加简单。

此外,Java EE可能会指定对标准XML API(例如,提供JDK的XML API)(例如JAXB 2.2)的进一步扩展,因此可以将此扩展实现透明地提供给您的应用程序。

因此,如果添加以下内容,而不是上面的依赖项集:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

<scope>provided</scope>元素很重要,因为此jar不需要与您的应用程序一起部署。它包含的类由Java EE 7服务器实现提供。

如果添加此依赖项,则还可以丢弃其他依赖项,例如servlet-api,jsp-api,ejb-api等,因为它们都包含在javaee-api依赖项中。