使用 Docker 将 .war 文件从 Nexus 部署到 Wildfly 时出错

问题描述 投票:0回答:1

我在尝试使用 Docker 将 .war 文件从 Nexus 部署到 Wildfly 时遇到错误。

错误信息是:

10:13:56,319 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "file.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"file.war\".component.\"javax.servlet.http.HttpServlet$NoBodyAsyncContextListener\".WeldInstantiator" => "Failed to start service
    Caused by: org.jboss.weld.resources.spi.ResourceLoadingException: Error while loading class javax.servlet.http.HttpServlet$NoBodyAsyncContextListener
    Caused by: java.lang.IncompatibleClassChangeError: javax.servlet.http.HttpServlet and javax.servlet.http.HttpServlet$NoBodyAsyncContextListener disagree on InnerClasses attribute"}}

我已尝试以下故障排除步骤,但没有成功:

  1. 从 pom.xml 中删除 javax.servlet 依赖项。
  2. 在依赖项 org.springframework.boot 中添加部分排除 (ch.qos.logback)。

我当前在 pom.xml 中使用的版本是: Java版本11 瓦丁版本 23.0.1 Wildfly Maven 插件版本 4.0.0.Final

在我的 Dockerfile 中,我使用以下内容: JDK 11 野蝇 15.0.1.Final MSSQL_JDBC_VERSION 12.4.2.jre11

spring-boot docker jboss wildfly
1个回答
0
投票

对于此类错误,您需要找到您的 Wildfly JavaEE 版本:

WildFly 15 支持 Java EE 8。这意味着它实现了 Java EE 8 中定义的规范,包括 Servlet 4.0、JPA 2.2、CDI 2.0、JSF 2.3 等。

那就依靠

<!-- https://mvnrepository.com/artifact/javax/javaee-api -->
<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>8.0</version>
    <scope>provided</scope>
</dependency>

这就是大多数情况下您所需要的。

并在您的类中使用 JavaEE API。然后不匹配错误就会消失。

© www.soinside.com 2019 - 2024. All rights reserved.