java: 程序包javax.servlet.http不存在

这篇具有很好参考价值的文章主要介绍了java: 程序包javax.servlet.http不存在。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述

当项目从2.7.x的springboot升级到3.0.x的时候,遇到一个问题“java: 程序包javax.servlet.http不存在” 。这可能是一些包的精简变化导致的。错误信息如下:

java: 程序包javax.servlet.http不存在,SpringBoot2启示录,servlet,springboot,maven

 错误代码段

java: 程序包javax.servlet.http不存在,SpringBoot2启示录,servlet,springboot,maven

package com.softdev.system.generator.config;

import com.softdev.system.generator.entity.ReturnT;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

/**
 * @author zhengkai.blog.csdn.net
 */
@ControllerAdvice
public class GlobalDefaultExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ReturnT defaultExceptionHandler(HttpServletRequest req, Exception e) {
        e.printStackTrace();
        return ReturnT.error("代码生成失败:"+e.getMessage());
    }

}

解决方案 

Maven Repository: jakarta.servlet » jakarta.servlet-api » 6.0.0 (mvnrepository.com)

增加一下依赖即可。

		<dependency>
			<groupId>jakarta.servlet</groupId>
			<artifactId>jakarta.servlet-api</artifactId>
			<version>6.0.0</version>
			<scope>provided</scope>
		</dependency>

修改后代码如下(请注意引用部分)

package com.softdev.system.generator.config;

import com.softdev.system.generator.entity.ReturnT;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import jakarta.servlet.http.HttpServletRequest;

/**
 * @author zhengkai.blog.csdn.net
 */
@ControllerAdvice
public class GlobalDefaultExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ReturnT defaultExceptionHandler(HttpServletRequest req, Exception e) {
        e.printStackTrace();
        return ReturnT.error("代码生成失败:"+e.getMessage());
    }

}

附录

其实很多教程仍然指向旧版的

Java Servlet is the foundation web specification in the Java Enterprise Platform. Developers can build web applications using the Servlet API to interact with the request/response workflow.

Maven Repository: javax.servlet » javax.servlet-api (mvnrepository.com)

但是新版的话已经叫Jakarta Servlet,来自Eclipse基金会,

Maven Repository: jakarta.servlet » jakarta.servlet-api » 6.0.0 (mvnrepository.com)

java: 程序包javax.servlet.http不存在,SpringBoot2启示录,servlet,springboot,maven

据说,racle在19年把javax捐给eclipse基金会,但不允许使用javax的命名空间,所以eclipse才继续发展成现在的javaee标准Jakarta,Jakarta 8与javaee 8只是换了个命名空间,jakarta9才是新的发展,spring6与spring boot3会采用Jakarta作为新的命名空间。文章来源地址https://www.toymoban.com/news/detail-623948.html

到了这里,关于java: 程序包javax.servlet.http不存在的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 解决办法|运行Java Web项目时 爆红“找不到符号,方法不会覆盖或实现超类型的方法,程序包javax.servlet不存在”如何解决?

    解决办法|运行Java Web项目时 爆红“找不到符号,方法不会覆盖或实现超类型的方法,程序包javax.servlet不存在”如何解决?

            1、项目Tomcat 服务器依赖未导入         2、项目的 SDK 版本选择错误   File→Project Structure Modules→Library  将自己的Tomcat选上之后点击Add Selected  将所选的Tomcat勾选后点击OK  Project Structure→Project→Project SDK→选择自己电脑的正确版本   问题成功解决! 

    2024年02月11日
    浏览(10)
  • SpringBoot 项目整合启动报错:javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/ser

    报错信息如下:java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/ser 历经此坑的心路历程,就是一个简单的服务项目整合到web项目中,期间并没有在意jar包依赖的问题,此问题只是简单登录跳转的问题,没有太在意,除了访问登录页的时候报错外,其

    2024年02月11日
    浏览(8)
  • SpringBoot3.1.2 引入Swagger报错Type javax.servlet.http.HttpServletRequest not present解决办法

    SpringBoot3.1.2 引入Swagger报错Type javax.servlet.http.HttpServletRequest not present解决办法

    1.问题描述: 引入swagger2.X版本后,导致SpringBoot3.1.2启动报错 2.原因分析: SpringBoot3.1.2版本依赖于jakarta依赖包,但是Swagger依赖底层应用的javax依赖包,所以只要一启动就会报错。 3.解决办法: pom.xml文件,移除swagger2 加入 代码修改 SwaggerConfig.java 实体类 controller类 遇到报错:

    2024年02月04日
    浏览(10)
  • java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.setContentLengthLong(J)V

    java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.setContentLengthLong(J)V

    先说原因,其实都是你的jar有问题 1.jar冲突 2.少依赖了包 网上很多说springmvc和springwebmvc,版本高于5.3.0导致的,会有这个问题,那是因为他们没看过源码,高版本的因为在这里,多了一行代码,这里设置的时候,会到实现类里面写一个东西,this.servletResponse.setContentLengthLong(

    2024年02月11日
    浏览(7)
  • javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping

    出现此类错误 需要检查各子项目中pom文件是否引用了重复的javax.servlet-api maven依赖导致。 如果项目是单体项目,检查是否引用org.springframework-spring-web依赖,必须移除掉移除嵌入式tomcat插件 检查controller层是否地址无误,本人是controller的接口不知道怎么删除掉了,导致一直出现

    2024年02月12日
    浏览(14)
  • 错误异常“The superclass “javax.servlet.http.HttpServlet“ was not found on the Java Build Path”的解决方法

    错误异常“The superclass “javax.servlet.http.HttpServlet“ was not found on the Java Build Path”的解决方法

    Java web导入项目后出现“ The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path ”错误的解决方法: 在eclipse中导入项目后常出现的问题。 原因分析:在java web工程下没有引入中间件(服务器tomcat)运行的library 导入项目包后会出现: 首先右击项目选择Properties 其

    2024年02月04日
    浏览(12)
  • Spring BOOT:javax.servlet.http.HttpServletRequest异常

    Spring BOOT:javax.servlet.http.HttpServletRequest异常

     Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: No primary or single unique constructor found for interface javax.servlet.http.HttpServletRequest] with root cause                  用SpringBoot做验证码的时候,需要用HttpServletReque

    2024年02月11日
    浏览(15)
  • idea导入import javax.servlet.http.HttpServletRequest;爆红

    idea导入import javax.servlet.http.HttpServletRequest;爆红

    1、问题描述: 2、解决办法: 第一步: 选中左侧项目 → 右键 → 选择 Open Module Settings  第二步: 在 Project Structure 窗口, 选择左侧的 Modules ,在选中中间的项目,点击右侧的+号,选择Library 第三步: 在Choose Libraries 窗口,选择New Library... ,在下拉框选择Java 第四步: 在Selec

    2024年02月11日
    浏览(12)
  • Type javax.servlet.http.HttpServletRequest not present

    运行环境  Swagger 3.0.0、springboot 3.0.0  产生原因: Swagger 3.0.0不支持spring3.0.0     两个解决方案:     1.降低springboot版本为2.x     2.放弃Swagger,使用  springdoc-openapi-starter-webmvc-ui 第二种解决方案: @Tag 用来设置 Controller 的名称和描述,类似于给 Postman 的 Collections 命名; @A

    2024年02月06日
    浏览(35)
  • 关于IDEA在写文件上传时,找不到javax.servlet.http.HttpServletRequest如何解决

    关于IDEA在写文件上传时,找不到javax.servlet.http.HttpServletRequest如何解决

            当我们在使用IDEA是,发现需要使用javax.servlet包下类时,IDEA无法识别类或是方法,会在控制台提示,无法找到javax.servlet.http.HttpServletRequest。此时我们需要按照一下的步骤进行导包即可。 1、选中项目所在的Module或工程名,右键单击Open Module Settings或者单击File——Pro

    2024年02月15日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包