当前位置: 首页 > news >正文

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启动时就会找不到相应的类。因此,此时需要把此项配置给注释掉,但是打包上线的时候并不需要这些依赖,那么在打包的时候就把注释打开,即可。

 

微信扫描二维码,关注我的公众号微信扫描二维码,关注我的公众号

 

相关文章:

  • Java读取表格数据
  • 将js对象转为json对象属性加上引号
  • 【Augmented Reality】增强现实中的光学透射式头盔显示器的标定进阶
  • 词向量的运用-用词向量理解词组的含义
  • laravel 5.3 ——路由(资源,别名)
  • SimpleDateFormat的线程安全问题
  • 函数递归
  • 【转】configure/make/make install的使用说明
  • PHP转义Json里的特殊字符的函数
  • C# 获取本机的所有ip地址,并过滤内网ip
  • 位/字节/ASCII/UTF-8/GBK/GB2312/Unicode 扫盲
  • Spark RDD学习: aggregate函数
  • 科技产品也要讲时尚 P9红蓝新色彰显独特风格
  • 在Windows 10下启用旧的照片查看器
  • 自制ssl凭证
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Angular 响应式表单之下拉框
  • ECS应用管理最佳实践
  • ES2017异步函数现已正式可用
  • HashMap ConcurrentHashMap
  • MaxCompute访问TableStore(OTS) 数据
  • MobX
  • OSS Web直传 (文件图片)
  • Protobuf3语言指南
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 初识MongoDB分片
  • 高程读书笔记 第六章 面向对象程序设计
  • 关于字符编码你应该知道的事情
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 使用 Docker 部署 Spring Boot项目
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 微信公众号开发小记——5.python微信红包
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 小李飞刀:SQL题目刷起来!
  • 学习笔记:对象,原型和继承(1)
  • 鱼骨图 - 如何绘制?
  • 第二十章:异步和文件I/O.(二十三)
  • 数据可视化之下发图实践
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (Oracle)SQL优化技巧(一):分页查询
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (十一)c52学习之旅-动态数码管
  • (转)Sublime Text3配置Lua运行环境
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET轻量级ORM组件Dapper葵花宝典
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面