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

原创 2018年04月17日 11:17:57

场景描述

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

异常一:

2018-04-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包。
添加之后,出现异常二:

2018-04-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文件,发现问题可能出现在一下两个地方:


org.springframework.boot
spring-boot-starter-tomcat
1.2.3.RELEASE
provided


org.apache.tomcat.embed
tomcat-embed-jasper
7.0.68
provided

注释掉两个配置中的

provided

问题就这么解决了。
总结

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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/karlin999/article/details/79972147

在VC中实现程序在启动时隐藏

    最近经常见论坛上有人问,程序在启动时如何隐藏。以下是我总结的一些方法,欢迎大家讨论,找出更好的方法。    对于这类问题,大家最容易想到的可能就是在PreCreateWindow中添加cs.s...
  • AttaBoy
  • AttaBoy
  • 2002-03-03 09:18:00
  • 1208

Spring boot+Spring Security 4配置整合实例

本例所覆盖的内容: 1. 使用Spring Security管理用户身份认证、登录退出 2. 用户密码加密及验证 3. 采用数据库的方式实现Spring Security的remember-me功能 ...
  • code__code
  • code__code
  • 2016-12-26 13:47:07
  • 51660

sbc(一)SpringBoot+SpringCloud初探

前言有看过我之前的SSM系列的朋友应该有一点印象是非常深刻的。 那就是需要配置的配置文件非常多,什么Spring、mybatis、redis、mq之类的配置文件非常多,并且还存在各种版本,甚至有些...
  • qq_18661793
  • qq_18661793
  • 2017-06-27 11:00:04
  • 3310

spring boot 实例演示+深度剖析

实例演示+深度剖析,只需两个文件即可搭建一个框架,就是如此简单~
  • lulu147
  • lulu147
  • 2016-12-22 17:53:56
  • 3414

spring boot +WebSocket(三) 点对点式

前两篇博客演示了广播式的websocket 推送。 广播式有自己的应用场景,但是广播式不能解决我门一个常见的场景,即消息由谁发送、由谁接收的问题。本例中演示了一个简单的聊天室程序。例子中只有两个用户...
  • u012373815
  • u012373815
  • 2017-01-12 18:38:44
  • 16263

最全面的springBoot集成mybatis+mysql项目搭建经验分享

大家都知道,现在Spring框架几乎无处不用,目前最新版本据说是Spring5,现在常用的基本还是Spring4.X,很多公司甚至用的还是Spring3.x,而Spring领域其中最好用的莫过于Spr...
  • guobinhui
  • guobinhui
  • 2018-02-08 15:56:23
  • 315

spring boot+thymeleaf+bootstrap 简单实现后台管理系统界面

spring boot+thymeleaf+bootstrap 简单实现后台管理系统界面
  • qq_14904081
  • qq_14904081
  • 2017-07-12 14:26:52
  • 15230

(十二)Spring Boot+Druid+Mybatis实现JTA分布式事务

源码下载:点此下载  整合Mybatis 配置两个SqlSessionFactory 分别扫描不同的包 对于分布式事务而言, JTA 是一个不错的解决方案,通常 JTA 需要应用服务器的支持,但在查阅...
  • qq_34021712
  • qq_34021712
  • 2017-08-28 10:14:23
  • 555

简单! springboot 项目,访问返回 Hello SpringBoot !

springboot 项目,访问返回 Hello SpringBoot ! 准备 浏览器jdk8uploading... idea(自备 ide 技能均可) 新建项目 进...
  • andyliulin
  • andyliulin
  • 2017-02-08 12:51:49
  • 3940

spring-boot项目在外部tomcat环境下部署

spring-boot默认提供内嵌的tomcat,所以打包直接生成jar包,用java -jar命令就可以启动。但是,有时候我们更希望一个tomcat来管理多个项目,这种情况下就需要项目是war格式的...
  • qq_31179919
  • qq_31179919
  • 2018-02-01 10:07:21
  • 17
收藏助手
不良信息举报
您举报文章:Spring boot ---- java.lang.NoClassDefFoundError: javax/servlet/ServletContext
举报原因:
原因补充:

(最多只允许输入30个字)