Spring boot ---- java.lang.NoClassDefFoundError: javax/servlet/ServletContext

 

场景描述

项目中用到spring boot进行带页面的开发,从github上的simples中下载了对应的spring-boot-sample-web-jsp项目,经简单修改之后死活启动不起来,各种异常。spring-boot以简单容易上手为核心宗旨,可为什么在引入jar时就会出现这么多问题呢?

异常信息

异常一:

2016-06-17 11:04:14.216 ERROR 4684 --- [           main] o.s.boot.SpringApplication               : Application startup failed

java.lang.NoClassDefFoundError: javax/servlet/ServletContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
at java.lang.Class.getDeclaredMethods(Class.java:1855)

很显然,这是没有找到ServletContext类导致的,于是乎,异想天开的添加了servlet-api的jar包。 
添加之后,出现异常二:

2016-06-17 11:06:13.860 ERROR 224 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

在网上搜索了各种此异常的解决方案都没有解决成功。

解决方案

在经过多次尝试,几乎要放弃的时候,突然想到一个问题,会不会是因为Intellij集成maven引入jar包时scope设置的问题。

仔细检查pom文件,发现问题可能出现在一下两个地方:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>1.2.3.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>7.0.68</version>
<scope>provided</scope>
</dependency>

注释掉两个配置中的

<scope>provided</scope>

问题就这么解决了。

总结

这可能是Intellij的一个bug,在使用spring-boot的时候,如果把某个引入的依赖设置为provided,那么在Intellij启动时就会找不到相应的类。因此,此时需要把此项配置给注释掉,但是打包上线的时候并不需要这些依赖,那么在打包的时候就把注释打开,即可

Spring boot ---- java.lang.NoClassDefFoundError: javax/servlet/ServletContext的更多相关文章

  1. java.lang.NoClassDefFoundError: javax/servlet/ServletContext

    方法1:把SpringBoot中main方法所在的class不再继承org.springframework.boot.context.web.SpringBootServletInitializer即 ...

  2. Spring boot Unable to start embedded Tomcat报错 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()

    Spring boot Unable to start embedded Tomcat 报错 java.lang.NoSuchMethodError: javax.servlet.ServletCon ...

  3. Spring 4.0 StandaloneMockMvcBuilder java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig 问题解决

    standaloneSetup(clrr). build(); 执行第二行 build() 时,出现下面的错误提示. java.lang.NoClassDefFoundError: javax/ser ...

  4. 【异常】idea执行Main方法出现 Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest

    一.异常复现步骤 1)首先得是一个Spring MVC项目 注:Spring Boot项目有内置的web 容器,不会出现该问题 2)main方法存在于使用HttpServletRequest类的类中 ...

  5. 【原】tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig的解决

    现象: tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig() ...

  6. tomcat7 启动项目报错 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()

    JDK版本:jdk1.8.0_77 Tomcat 版本:apache-tomcat-7.0.47 异常重现步骤: 1.完成项目部署 2.启动Tomcat 异常头部信息:java.lang.NoSuch ...

  7. java.lang.NoClassDefFoundError: javax/servlet/AsyncContext

    报错:java.lang.NoClassDefFoundError: javax/servlet/AsyncContext 我认为你需要在Servlet API,而不是2.5.AsyncContext ...

  8. Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config解决

    出现这个问题往往伴随  HTTP-500错误 报错信息: HTTP Status - Handler processing failed; nested exception is java.lang. ...

  9. tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig的解决

    现象: tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig() ...

随机推荐

  1. Asp.net mvc Kendo UI Grid的使用(三)

    上一篇的操作已经能够显示基本数据了,这次介绍一下如何进行数据操作以及显现自定义命令. 第一步当然还是准备数据: [HttpPost] public ActionResult PersonalList_ ...

  2. 在 Azure VM 上安装 LEMP Web 服务器

    本文逐步讲解如何在 Azure 中的 Ubuntu VM 上部署 NGINX Web 服务器.MySQL 和 PHP(LEMP 堆栈). LEMP 堆栈可以替代常用的 LAMP 堆栈,可安装在 Azu ...

  3. 【Redis】命令学习笔记——列表(list)+集合(set)+有序集合(sorted set)(17+15+20个超全字典版)

    本篇基于redis 4.0.11版本,学习列表(list)和集合(set)和有序集合(sorted set)相关命令. 列表按照插入顺序排序,可重复,可以添加一个元素到列表的头部(左边)或者尾部(右边 ...

  4. 在table中选中某条数据,让其显示对应详细信息

    在第一个页面中使用 ccms.dialog.open({url:url+$(this).attr("code"),id:"dialogPic",width:10 ...

  5. 动态将彩色图片动画过渡到黑白图片的BlackAndWhiteView

    动态将彩色图片动画过渡到黑白图片的BlackAndWhiteView 效果如下: BlackAndWhiteView.h 与 BlackAndWhiteView.m // // BlackAndWhi ...

  6. Hadoop HBase概念学习系列之HBase里的高表设计概念(表设计)(二十八)

    在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBa ...

  7. App案例分析——XBMC

    本文分析app的是安卓本地视频播放器:XBMC. 第一部分: 调研,评测 1.下载软件并使用起来,描述最简单直观的个人第一次上手体验.   第一次使用这个播放器,就很喜欢这个主界面,其他类似软件的主界 ...

  8. HBase性能优化 Java Api

    1. 使用“连接池” 如果每次和Hbase交互时都去新建连接的话,显然是低效率的,HBase也提供类连接池相关的API. 1.1. HTablePool 早期的API中使用它,但很不幸,现在它已经过时 ...

  9. 4-4 R语言函数 tapply

    #对向量的子集进行操作 #tapply(参数):tapply(向量,因子/因子列表,函数/函数名) > x <- c(rnorm(5),runif(5),rnorm(5,1)) > ...

  10. Python之美[从菜鸟到高手]--2+2=5

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/yueguanghaidao/article/details/35644165     今天在伯乐在线 ...