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

JBoss8: Error UT005023 - Exception handling request to URL

我在 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

我的 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>

您是在自找麻烦,在您的应用程序中包含任何这些 jar。

这些 jar 提供的 API 和实现存在于 JDK(早在 Java 5)中,如果您使用它们而不是添加额外的东西,您会发现生活要简单得多(可能已过时)版本到您的应用程序。

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

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

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>

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

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