java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest

前言

最近导入一个算得上较老的springboot项目,可能当时的人还是偏向于类似使用SSM打包成war包放在Tomcat中运行,与现在直接使用嵌入式Tomcat运行jar包的思想有所差异,所以特地记下。

错误信息

当时觉得是个springboot的项目,按照经验把环境配好后二话不说直接启动
在这里插入图片描述
不负众望出现了报错信息:

2020-01-18 11:37:33.803 ERROR 19176 --- [  restartedMain] o.s.boot.SpringApplication               : Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demoController': 
Failed to introspect bean class [com.hushangjie.controller.DemoController] for lookup method metadata: could not find class that it depends on; 
nested exception is java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest

思考

上面报错信息说的是找不到javax.servlet.http 这个依赖包。问题是我在Mave Projects里没看到有爆红的,并且javax.servlet.http包也能找得到。
在这里插入图片描述
这时就纳闷了,那应该是运行时出了问题,我到网上查了很多关于javax.servlet.http的信息,发现很多博客都说这个包是在Tomcat内自带的,说到Tomcat我猛的一惊醒,赶紧到pom文件下康康,果不其然
在这里插入图片描述
它这里最终打包成的是一个war包,既然是war包那就很好解释为什么它说找不到javax.servlet.http,因为它是要在Tomcat内部运行的。所以运行整个项目还是要用以前的方式整个Tomcat。

解决方法

命令行进入项目内先使用

mvn clean package

或者点一哈这两个按钮把项目打包出来
在这里插入图片描述
修改运行项目配置
在这里插入图片描述
添加Tomcat
在这里插入图片描述
添加后修改一下name并且deployment加入刚刚打包出来的war包
在这里插入图片描述
此时再运行Tomcat就能够把项目启动起来了。
在这里插入图片描述

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这是一个Java错误,表示找不到javax.servlet.http.HttpServletRequest类。这通常是由于缺少相关的Java Servlet API库或类路径配置错误导致的。要解决此问题,您需要确保正确配置了类路径,并且已经包含了所需的Java Servlet API库。 ### 回答2: Java是一门面向对象的编程语言,非常流行且被广泛应用于各种应用程序的开发。Java中经常会用到Java Servlet技术,而在Java Servlet中,HttpServletResponse类和HttpServletRequest类是非常重要的两个类。这两个类通常被用来处理HTTP请求和响应。HttpServletResponse类用来发送服务器响应,HttpServletRequest类用来接收和处理客户端请求信息。 然而,在某些情况下,当开发者在使用HttpServletRequest类时,可能会出现如题所示的错误:java.lang.noclassdeffounderror: javax/servlet/http/httpservletrequest。 这个错误通常表示缺少了HttpServletRequest类所在的javax.servlet.http包,或者该包中的某些类文件缺失或不兼容。这个问题可能会出现在使用某些IDE,如Eclipse、NetBeans或Idea时,并且经常在升级Java版本或导入项目时出现。 解决这个问题有几种方法。一种方法是通过手动添加javax.servlet.http.jar包来解决。这通常是在Web服务器中部署代码时使用的方法。开发者可以从官方网站上下载javax.servlet.http.jar文件,并将其添加到项目的classpath中。 另一种方法是在开发环境中修改项目的构建路径,以将Web服务器提供的servlet-api.jar添加到classpath中。这种方法可以在开发过程中解决该问题,但需要注意不要将servlet-api.jar打包到WAR文件中,以免在部署到服务器时出现问题。 最后,如果仍然无法解决该问题,可以考虑升级Java EE版本或使用其他版本的servlet-api.jar文件。 总之,可以使用上述方法来解决这个错误,使开发者能够顺利开发和部署Java Servlet应用程序。 ### 回答3: Java.lang.noclassdeffounderror: javax/servlet/http/httpservletrequest(无法找到类javax / servlet / http / httpservletrequest)是Java应用程序中的一个常见错误。通常,这种类型的错误表示程序试图引用一个在编译时存在的类,但在运行时却找不到它。 通常,这种错误的原因是缺少必要的JAR文件或类库。在Java应用程序中,这通常是由于分发的WAR文件包中缺少JAR文件而导致的。在大多数情况下,这是由于在部署过程中丢失了某些必要的文件或某些文件意外地被删除所致的。 另外一个可能的原因是应用程序尝试在其类路径中引用某些类文件,但之前引用的类文件发生错误。例如,如果一个类依赖于另一个类,并且另一个类存在问题,则在应用程序中引用该类时就会出现问题。 解决这个错误的方法通常是找出缺少的类或JAR文件,然后将其添加到应用程序的类路径中。或者,您可以将必要的类直接添加到Java应用程序jar文件中。无论 which 程序可能需要的文件丢失,都必须检查JAR文件和类文件路径,并确保运行时环境拥有应用程序所需的所有文件。在某些情况下,右键单击Eclipse项目,选择Properties选项,并选择Java Build Path选项卡中的选项来修改构建路径。 总而言之,错误Java.lang.noclassdeffounderror: javax/servlet/http/httpservletrequest通常是由缺少必要的JAR文件或类文件导致的。要解决此错误,应该检查应用程序的类路径并确保必要的文件存在。如果仍然存在问题,则可以尝试重新编译应用程序并重新部署它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值