Java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet解决办法

抛出的异常: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest

2017-09-15 14:44:09.986 ERROR 7068 --- [           main] o.s.boot.SpringApplication               : Application startup failed

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
	at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_121]
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_121]
	at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_121]
	at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:612) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510) ~[spring-core-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:243) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1074) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1047) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
	at com.srain.demo.Application.main(Application.java:9) [classes/:na]
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_121]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_121]
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_121]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_121]
	... 24 common frames omitted

2017-09-15 14:44:09.990  INFO 7068 --- [           main] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@3b0090a4: startup date [Fri Sep 15 14:44:08 CST 2017]; root of context hierarchy
2017-09-15 14:44:09.993  WARN 7068 --- [           main] s.c.a.AnnotationConfigApplicationContext : Exception thrown from LifecycleProcessor on context close

java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: org.springframework.context.annotation.AnnotationConfigApplicationContext@3b0090a4: startup date [Fri Sep 15 14:44:08 CST 2017]; root of context hierarchy
	at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:416) [spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:997) [spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:956) [spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
	at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:818) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
	at com.srain.demo.Application.main(Application.java:9) [classes/:na]


环境:

JDK1.8  IDEA  spring-boot 

异常表现:

正常启动spring-boot项目,启动抛上面异常

之前看了好几篇文章,都是jar包冲突,但我没有引入 servlet-api.jar, 怎么冲突. 然后我突然想起, 之前spring-boot 自动集成容器,可能自带容器中的jar包与maven引入的tomcat依赖中的jar包有冲突,

	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

将pom文件中,tomcat依赖注释掉后, 项目可以正常启动了!!!   如上图的依赖!




  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: "java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet" 这个错误消息表明程序在运行时找不到 javax.servlet.http.HttpServlet 这个类,通常是因为没有将相关的 Servlet API 库添加到 classpath 中。请检查项目的依赖配置并确保已经正确添加了该库。 ### 回答2: java.lang.noclassdeffounderror: javax/servlet/http/httpservletJava编程中常见的错误之一,它通常表示缺少servlet相关的jar包或者类文件。在Java Web应用中,javax.servletJava Servlet API,是用于处理HTTP请求和响应的Java API的一部分。httpservletHttpServlet类的完全限定名,是一个用于处理HTTP协议的Java Servlet API类。而这个错误通常是因为缺少servlet-api.jar包或者在编译和运行时环境中没有设置servlet-api.jar包的路径。 解决这个问题的方法包括下面几种。 一、将相关的jar包添加到工程中,或者确认工程的classpath是否包含相关的jar包。 二、在编译时设置JAVA_HOME环境变量和CLASSPATH环境变量,例如在Windows系统下,在控制台中输入命令: set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_121 set CLASSPATH=%JAVA_HOME%\jre\lib\charsets.jar;%JAVA_HOME%\jre\lib\deploy.jar;%JAVA_HOME%\jre\lib\ext\access-bridge-64.jar;%JAVA_HOME%\jre\lib\ext\C:\tomcat\lib\servlet-api.jar;%JAVA_HOME%\jre\lib\ext\jfxrt.jar;%JAVA_HOME%\jre\lib\ext\localedata.jar;%JAVA_HOME%\jre\lib\ext\nashorn.jar;%JAVA_HOME%\jre\lib\ext\sunec.jar;%JAVA_HOME%\jre\lib\ext\sunjce_provider.jar;%JAVA_HOME%\jre\lib\ext\sunmscapi.jar;%JAVA_HOME%\jre\lib\ext\sunpkcs11.jar;%JAVA_HOME%\jre\lib\ext\zipfs.jar;%JAVA_HOME%\jre\lib\javaws.jar;%JAVA_HOME%\jre\lib\jce.jar;%JAVA_HOME%\jre\lib\jfr.jar;%JAVA_HOME%\jre\lib\jfxswt.jar;%JAVA_HOME%\jre\lib\jsse.jar;%JAVA_HOME%\jre\lib\management-agent.jar;%JAVA_HOME%\jre\lib\plugin.jar;%JAVA_HOME%\jre\lib\resources.jar;%JAVA_HOME%\jre\lib\rt.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 三、在开发工具中添加Tomcat运行环境,这样开发工具会根据Tomcat运行环境中的servlet-api.jar包来进行编译和运行。 总的来说,java.lang.noclassdeffounderror: javax/servlet/http/httpservlet问题的解决方法主要是确认工程中是否包含相关的jar包,或者设置正确的运行环境路径,或者配置开发工具的相关设置。需要注意的是,在解决这个问题的过程中,我们也需要学会查看相关的错误信息和日志,以便更好地排查问题的根源并做出及时有效的解决。 ### 回答3: java.lang.noclassdeffounderror: javax/servlet/http/httpservlet 是一个Java运行时异常,通常在使用Java ServletJavaServer Pages时出现。这个错误的原因是在运行时没有找到所需类的定义。 通常情况下,这个错误是由于缺少相关依赖包或相关类文件无法被访问所致。如何解决这个问题取决于具体的情况。 如果是缺少相关依赖包,可以通过以下步骤来解决这个问题: 1. 确认所需依赖包已经添加到项目中,例如servlet-api.jar或者jstl.jar等等。 2. 确认依赖包的路径是否正确配置,特别是在使用IDE时,很多情况下IDE会默认添加依赖包,但可能路径不正确。 3. 确认所需依赖包是否与项目的Java版本兼容,如果依赖包使用的是Java8,而项目使用的是Java7,则会出现这个错误。 如果是相关类文件无法被访问,可以通过以下步骤来解决这个问题: 1. 确认项目的类路径配置是否正确,特别是在使用IDE时,可能需要手动添加类路径。 2. 确认相关的类文件是否存在,如果不存在,可能需要重新下载或者更换版本。 3. 确认相关的类文件是否可读,如果不可读,可能需要使用chmod命令修改文件权限。 总之,java.lang.noclassdeffounderror: javax/servlet/http/httpservlet 这个错误可以通过确认依赖包或相关类文件的存在、可读性以及与项目的兼容性来解决。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值