解决Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]的方法
遇到这个问题的有很多种情况
第一种:web.xml问题,这个只要好好检查一下代码就可以解决
网上大部分都是这个的问题(servlet路径配置错误)
servlet-mapping中的
<url-pattern>/</url-pattern>
第二种:maven仓库下有的jar包的问题
根据cause by 后面的语句去解决缺少的jar包就可以了。
例如:
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
at java.lang.Class.getDeclaredFields(Class.java:1916)
at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:110)
at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:269)
看上面是缺少fileupload导致,但是查看我们的maven发现,已经导入了
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
然后查看war包里面有没有,从项目文件目录中找到我们的包:
发现在war包中并没有存在fileupload这个jar包,,也就是说这个项目丢到tomcat上去运行的时候找不到这个包所以就报错了,
但是我们明明已经引入了呀 ,为什么没有被加载进来呢
解决方法1)
把这个war包删掉,或者直接吧out目录还有target目录下的东西全部都散掉,然后运行tomcat重新生成
2)
如果重新生成的还没有,那么打开项目结构:
在这里我们可以看到在我们的war包中没有这个jar包 但是在我们的项目中存在,只是没有打包进去而已,我们只需要双击右边我们项目中jar包,就会自动帮助我们添加到war包中了,然后应用,程序就可以正常加载了。