当前位置: 首页 > 知识库问答 >
问题:

Spring启动-NoClassDefFoundError:javax/servlet/Filter

池阳伯
2023-03-14

我试图使用Netty服务器。所以我在pom.ml文件中排除了Tomcat;

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

当我运行应用程序,我得到的错误引起:java.lang.NoClassDefFoundError: javax/servlet/Filter

然后我添加依赖项

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <scope>compile</scope>
</dependency>

然后,当我运行应用程序时,再次得到错误信息。springframework。上下文ApplicationContextException:由于缺少ServletWebServerFactory bean,无法启动ServletWebServerApplicationContext。

我查了好几个问题,还没找到。

有什么想法吗?

  • 开机:2.1。3.发布
  • 月食:4.7

共有1个答案

上官季
2023-03-14

如果希望在WebFlux和WebFlux(spring boot starter WebFlux)中使用netty服务器,则默认情况下使用netty服务器,默认情况下使用spring boot starter web。

WebFlux提供了多种服务器选择(Netty、Tomcat、Jetty、Undertow和Servlet 3.1容器)。Tomcat和Jetty都是基于servlet的服务器,但Netty和Undertow是非基于servlet的服务器。

如果您想使用netty服务器和外部jar,其中使用ServletAPI,那么必须在pom中添加以下依赖项。xml

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>
 类似资料:
  • 我用Spring Boot 1.2.3启动了一个新项目。我发现了一个错误 Gradle Dependencies: 这是完整的堆栈跟踪

  • 我刚开始使用Spring Boot,在运行我的应用程序时出现了错误。我正在学习教程,我相信我有正确的父母和依赖与POM,请帮助我 主类: POM:

  • 如果I并通过JBOss web接口进行部署,servlet将进行部署。 使用eclipse,JPA类已经部署,持久性的东西也已经设置,但是我没有从servlet中得到任何东西。 除了persistence.XML之外,我没有任何XML文件,只有如下所示的带注释的servlet:

  • 我正在使用一个Maven多模块,其中一场战争取决于另一场战争。 Spring Boot webapp依赖于只提供html文件的基本webapp。 当我运行SpringBoot应用程序时,我能够从主webapp(SpringBoot应用程序)访问服务和html,但是我不能从DependencyWar(404)访问html文件。但是这些html文件在SpringBootWebApp战争中得到了很好的打

  • 我在启动spring boot应用程序时遇到以下错误。这是我的第一个spring boot项目。因此,我不确定错误以及如何修复它。 申请启动失败 描述: 配置为侦听端口8080的Tomcat连接器无法启动。端口可能已在使用中,或者连接器可能配置错误。 行动: 验证连接器的配置,识别并停止在端口8080上侦听的任何进程,或者将此应用程序配置为在另一个端口上侦听。

  • 问题内容: 当请求到达处理文件上传的servlet时,在该servlet中启动一个新线程是一个好主意,该线程将处理与上传的文件一起提供的另一段数据。我想以此同时处理这两项工作。 问题答案: 这不仅是一个坏主意,而且也行不通。原因如下:您的文件上传请求最终将命中方法。只要您使用此方法,容器就会保持连接打开。从该方法返回后(如果您决定在一个单独的线程中处理传入数据,则将提早完成),容器将假定您已完成请