- 错误: 在maven项目,web启动的时候报这个错误
Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
- 错误原因:
maven插件当中提供了servlet的jar包。但我们web当中又自己提供了servlet包。
因为我们没有指定我们自己包的运行范围,默认在整个期间都生效、此时就会造成俩个包的冲突
所需要在自己包指定运行范围 : <scope> provided </scope>
- 解决方法是:
指定自己JAR包作用域为 provided
- 此外,一个优秀的程序员在遇到错误后不仅要解决错误,更要学会扩展错误
关于maven依赖中的scope的作用和用法:
scope中的值常见可分为:
- test
test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖
- compile
compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去
- provided
provided依赖:在编译和测试的过程有效,最后生成war包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突
- runtime
runntime:仅仅适用于运行环境,在编译和测试环境下都不会被使用