Maven Web 项目 tomcat 启动时报Failed to start component [StandardEngin
一、问题描述
在启动Maven Web
项目时,报“Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]”等错误。经排查,原因如下:
tomcat
版本太高的原因,为其配套的servlet-api.jar
不匹配或项目工程lib
下有低版本的servlet-api.jar
,tomcat7
以前的这个包没有getSessionCookieConfig
这个方法,7的包有这个方法,
解决方法,删除项目工程lib
文件夹的低版本的servlet-api.jar
,tomcat
的lib
文件夹里用默认带的jar
包。或者把tomcat
换成版本6。
二、解决方法
但是自己在尝试了之后,并没有解决问题。忽然自己想到是不是在重新导入项目之后Web
项目没有进行相应的
propertiy
->Deployment Assembly
->add
->Java Build Path Entries
->Tomcat
发布Web
项目
一系列操作,尝试之后,果然问题迎刃而解。但是自己还是没有找到问题的根本原因所在。
三、延伸阅读
- 《Maven 系列》
四、拓展阅读 多仓库配置
maven
的中央仓库很强大,绝大多数的jar
都收录了。但也有未被收录的。遇到未收录的jar
时,就会编译报错。
除了maven
官方提供的仓库之外,也有很多其他的仓库。尽可能的将可信仓库添加几个,弥补maven
官方仓库的不足。
4.1 多仓库配置方式一:全局多仓库设置
全局多仓库设置,是通过修改maven
的setting
文件实现。
设置思路:在setting
文件中添加多个profile
(也可以在一个profile
中包含很多个仓库),并激活(即使是只有一个可用的profile
,也需要激活)。
修改maven
的setting
文件,设置两个仓库(以此类推,可以添加多个):
<profiles>
<profile>
<!-- id必须唯一 -->
<id>myRepository1</id>
<repositories>
<repository>
<!-- id必须唯一 -->
<id>myRepository1_1</id>
<!-- 仓库的url地址 -->
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>;
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<!-- id必须唯一 -->
<id>myRepository2</id>
<repositories>
<repository>
<!-- id必须唯一 -->
<id>myRepository2_1</id>
<!-- 仓库的url地址 -->
<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>;
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<!-- 激活myRepository1 -->
<activeProfile>myRepository1</activeProfile>
<!-- 激活myRepository2 -->
<activeProfile>myRepository2</activeProfile>
</activeProfiles>
4.2 多仓库配置方式二:在项目中添加多个仓库
在项目中添加多个仓库,是通过修改项目中的pom
文件实现的。
思路:在项目中pom
文件的repositories
节点(如果没有手动添加)下添加多个repository
节点,每个repository
节点是一个仓库。
修改项目中pom
文件,设置两个仓库(以此类推,可以添加多个):
<repositories>
<repository>
<!-- id必须唯一 -->
<id>jboss-repository</id>
<!-- 见名知意即可 -->
<name>jboss repository</name>
<!-- 仓库的url地址 -->
<url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>;
</repository>
<repository>
<!-- id必须唯一 -->
<id>aliyun-repository</id>
<!-- 见名知意即可 -->
<name>aliyun repository</name>
<!-- 仓库的url地址 -->
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>;
</repository>
</repositories>
注:以上两种方式的id
值均不可以为“central
”。
- 点赞
- 收藏
- 关注作者
评论(0)