前言
最近导入一个算得上较老的springboot项目,可能当时的人还是偏向于类似使用SSM打包成war包放在Tomcat中运行,与现在直接使用嵌入式Tomcat运行jar包的思想有所差异,所以特地记下。
错误信息
当时觉得是个springboot的项目,按照经验把环境配好后二话不说直接启动
不负众望出现了报错信息:
2020-01-18 11:37:33.803 ERROR 19176 --- [ restartedMain] o.s.boot.SpringApplication : Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demoController':
Failed to introspect bean class [com.hushangjie.controller.DemoController] for lookup method metadata: could not find class that it depends on;
nested exception is java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
思考
上面报错信息说的是找不到javax.servlet.http
这个依赖包。问题是我在Mave Projects里没看到有爆红的,并且javax.servlet.http包也能找得到。
这时就纳闷了,那应该是运行时出了问题,我到网上查了很多关于javax.servlet.http的信息,发现很多博客都说这个包是在Tomcat内自带的,说到Tomcat我猛的一惊醒,赶紧到pom文件下康康,果不其然
它这里最终打包成的是一个war包,既然是war包那就很好解释为什么它说找不到javax.servlet.http,因为它是要在Tomcat内部运行的。所以运行整个项目还是要用以前的方式整个Tomcat。
解决方法
命令行进入项目内先使用
mvn clean package
或者点一哈这两个按钮把项目打包出来
修改运行项目配置
添加Tomcat
添加后修改一下name并且deployment加入刚刚打包出来的war包
此时再运行Tomcat就能够把项目启动起来了。