Spring Web 应用程序 + Java 17 和 Tomcat 10.1 - onStartup(jakarta.servlet.ServletContext)' org.springframework.web.WebApplicationInitializer

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

我不确定为什么有对 org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration$JerseyWebApplicationInitializer 的引用,因为没有 Spring Boot 依赖项 - 通过使用 maven 命令检查确认:mvn dependency:tree

以下是启动时的错误。

Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/myapp]]
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:878)
    ... 21 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/myapp]]
    at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871)
    ... 21 more
Caused by: java.lang.AbstractMethodError: Receiver class org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration$JerseyWebApplicationInitializer does not define or inherit an implementation of the resolved method 'abstract void onStartup(jakarta.servlet.ServletContext)' of interface org.springframework.web.WebApplicationInitializer.
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:171)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4882)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    ... 27 more

May 12, 2023 4:53:16 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-nio-8082"]
May 12, 2023 4:53:16 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Catalina]
May 12, 2023 4:53:16 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-nio-8082"]

pom.xml

...
<spring.version>6.0.8</spring.version>
...
<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>       
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>

Tomcat 启动时应该没有错误

java tomcat
1个回答
0
投票

从 spring 5 更新到 spring 6 后我遇到了同样的问题。 无论出于何种原因,在依赖文件夹中保留版本 2 中的旧 spring-boot-autoconfigure 文件。只需在版本 3 的 pom 文件中声明它:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>3.1.4</version>
    </dependency>
© www.soinside.com 2019 - 2024. All rights reserved.