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

最新文章

  1. Java三大框架之——Hibernate
  2. jquery easyui菜单树显示
  3. mysql explain输出中type的取值说明
  4. C#综合揭秘——细说多线程
  5. C# this指针用法
  6. c++ const char *c_str(); 坑的学习
  7. 委托demo
  8. 配置SHH集群
  9. Tachyon Cluster: 基于Zookeeper的Master High Availability(HA)高可用配置实现
  10. Java实现串口通信的小样例
  11. jq动态添加的元素触发绑定事件无效
  12. 学习总结------Servlet控制器的简单运用
  13. Android进阶(二十一)创建Android虚拟机
  14. .NET Core中使用AutoMapper
  15. Oracle SQL性能优化的40条军规
  16. 关于Java面试
  17. 最小生成树求最大比率 UVALive - 5713
  18. redis分布式锁小试
  19. idea git 使用
  20. C++中1/0和1/0.0的区别

热门文章

  1. alwayson监控
  2. NSOperation的使用细节 [3]
  3. 定制NSError
  4. (转)透明光照模型与环境贴图之基础理论篇(折射率、色散、fresnel定律) .
  5. zabbix日常监控项mysql(七)
  6. Sharepoint 2013 - 直接显示Doclib中的html page
  7. BlockingQueue笔记
  8. VS2015 无法启动IIS Express Web服务器(已解决)
  9. nginx alias
  10. 微软YY公开课[《微软中国云计算Azure平台体验与新企业架构设计》 周六晚9点