将MyEclipse+Tomcat5.5项目迁移至Eclipse Oxygen+Tomcat7遇启动异常
Hey, let's tackle those deployment errors you're hitting when moving your MyEclipse project to Eclipse Oxygen with Tomcat 7 and Java 7. I've run into similar issues before, so here's a step-by-step breakdown to fix them:
解决Tomcat部署报错的方案
1. 修复org.apache.catalina.util.StringManager找不到的问题
这个类是Tomcat的核心组件,找不到它通常是Jar冲突或配置问题:
- 检查项目的
WEB-INF/lib目录,删除所有Tomcat相关的Jar包(比如catalina.jar、tomcat-coyote.jar)。Tomcat服务器会自动提供这些核心依赖,项目里自带的话会引发冲突。 - 调整Eclipse的Tomcat类加载配置:右键Tomcat服务器 → Properties → Server Options,勾选
Publish module contexts to separate XML files,然后重启服务器。
2. 确保Java版本与环境完全匹配
版本不兼容是迁移时的常见坑:
- 项目编译配置:右键项目 → Properties → Java Compiler,勾选
Enable project specific settings,将编译器版本设置为1.7。 - Tomcat运行时JRE:右键Tomcat服务器 → Properties → Runtime Environment,确认关联的JRE是Java 7。
- 项目Facets配置:右键项目 → Properties → Project Facets,确保
Java版本为1.7,Dynamic Web Module版本选择3.0(Tomcat 7原生支持Servlet 3.0)。
3. 排查Web.xml配置错误
Child容器启动失败大多和Web.xml的不兼容配置有关:
- 检查是否有重复的Servlet/Filter定义,或者映射路径错误。
- 删除MyEclipse生成的Tomcat 5.5特有配置(比如过时的监听器、自定义参数),这些在Tomcat 7中可能不兼容。
- 确保Web.xml根元素使用Servlet 3.0的命名空间:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
4. 清理缓存与重建项目
编译残留或缓存经常引发奇怪的启动问题:
- 清理项目:右键项目 → Clean,勾选你的项目后执行清理。
- 清理Tomcat服务器:右键Tomcat服务器 → Clean,清除服务器缓存和已部署的旧项目。
- 重新部署:右键Tomcat服务器 → Add and Remove,移除旧的项目部署记录,重新添加后启动服务器。
5. 检查第三方Jar的兼容性
如果项目依赖的第三方Jar不支持Java 7或Tomcat 7,也会导致启动失败:
- 逐一检查
WEB-INF/lib中的第三方Jar,确保它们的版本兼容Java 7(比如一些老旧Jar可能只支持Java 5/6)。 - 对于
commons-logging这类容易冲突的Jar,确保版本和Tomcat 7自带的版本匹配,避免类加载冲突。
内容的提问来源于stack exchange,提问作者Pavan Kumar T S
相关产品推荐
相关产品推荐

