springboot 启动异常 javax/servlet/ServletContext Unable to start embedded container; nested exception is

zz/2024/6/13 22:58:04

场景描述

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

已经遇到两次相同的问题,谨记!

转载来自 :
http://blog.csdn.net/wo541075754/article/details/51698552


http://www.ngui.cc/zz/2748856.html

相关文章

Linux java基础环境搭建 ->JDK

JDK&#xff1a; 1.百度搜索jdk下载&#xff0c;进入oracle官网 比如&#xff1a;https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2. 在linux 进行下载该链接 使用 wget&#xff1a; wget http://download.oracle.com/otn-pub/java/jd…

Linux->mysql基本操作命令及常见问题

常用命令 连接数据库&#xff1a;mysql -uroot -p 输入相应密码允许数据库远程连接 use mysql; update user set host% where user用户名; flush privileges;显示 数据库: show databases; 显示 数据库的表&#xff1a;show tables;创建数据库并指定编码 create database 数据…

零:初识Linux基础知识

通用知识 上大学使用的都是Windows系统&#xff0c;界面友好&#xff0c;上手快&#xff0c;习惯性的点点点操作大部分的课程在windows中操作&#xff0c;比如C用的Vistual Studio&#xff0c;学数据库的SQL Server大学中的操作系统更加偏向理论研究&#xff0c;至于到底是怎么…

Linux 查看磁盘 查看磁盘IO并找出占用 并找出占用IO读写很高的进程

前言 系统&#xff1a;Centos环境&#xff1a;测试环境服务器类型&#xff1a;联想&#xff08;ThinkServer&#xff09;塔式服务器 TS250测试童鞋反馈系统很卡&#xff0c;保存数据非常非常慢&#xff0c;第一反应是重启应用及数据库&#xff0c;不一会说还是非常慢&#xff…

【面试大全-Spring】Spring Bean是如何创建的

在Spring中&#xff0c;万物都是bean对象&#xff0c;每一个对象都可以封装成BeanDefinition&#xff0c;然后去生成bean对象。 所以首先第一步&#xff0c;spring要找到哪些bean需要实例化&#xff0c;第一种是xml的方式&#xff0c;如果需要实例化bean就在xml中配置bean标签&…

【面试大全-Java】必备基础

Java语言有哪些特点 简单易学、提供丰富的类库面向对象、高内聚低耦合与平台无关、JVM跨平台可靠安全、支持多线程面向对象和面向过程的区别 面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步步实现,然后在使用的时候一起调用即可,性能较高,所以单片机嵌入式开发都…

【元宇宙】当前元宇宙运行规则问题与展望

一、背景&#xff1a;愈演愈烈的“元宇宙热” 当赛博朋克科幻小说《雪崩》&#xff08;Snow Crash&#xff09;在1992年发表之时&#xff0c;作者尼尔斯蒂芬森(Neal Stephenson)绝不会想到自己提出的“元宇宙”&#xff08;Metaverse&#xff09;概念竟然会在十九年后的资本市场…

6月26日网络编程

网络编程 1、软件之间通信条件&#xff1a; a.找到对方IP b.数据要发送到对方指定的应用程序上&#xff0c;为了表示这些程序&#xff0c;所以给这些网络应用程序都用数字进行标示。 为了方便称呼这个数字&#xff0c;叫做端口&#xff0c;逻辑端口。 c.定义通信规则。既成…

7月02日SQL server条件以及高级查询

SQL server条件以及高级查询 --条件 --where 请问if() --select,update,delete需要加条件 --true flase --关系运算符&#xff1a; && || ! --> < > < ! and or not select *from student select *from student where saddress陕西 sel…

Android监听HOME键的另外一种方法

众所周知&#xff0c;我们监听返回键事件&#xff0c;无法是下面两个方法&#xff1a; Overridepublic void onBackPressed() {//do something//super.onBackPressed();}Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode KeyEvent.KEYCODE_BACK){/…