Error“Cannot change version of project facet Dynamic web module to 2.5”导致Tomcat无法启动,解决办法:
Eclipse创建Maven结构的web项目时catalog比较老,servlet停留在2.3版本,而一般现在至少都是2.5,因此需要修改servlet版本。但是在Project Facets(项目右键选择“properties”,在出现的对话框的左侧选项栏中选择“Maven-Project Facets”)里面修改Dynamic web module为2.5的时候下面的信息框也会出现Cannot change version of project facet Dynamic web module to 2.5,如图:
右边可以看到改到2.5需要的条件以及有冲突的facets,解决这个问题的步骤如下:
一、把Servlet改成2.5,打开项目的web.xml,如下:
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID"version="2.5">
<web-app>
以上黄色高亮部分版本如果不是2.5版本,改为2.5版本
二、修改项目的设置,需要修改项目下.settings文件夹下3个文件:
1. org.eclipse.jdt.core.prefs文件:将文件中所有的版本号1.5修改为当前jdk版本,如本机安装的jdk版本为jdk1.7.0_79就改为1.7,如下黄色高亮部分:
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.7
2. org.eclipse.wst.common.component文件:将文件中project-version="1.5.0"改成当前jdk版本,如本机安装的jdk版本为jdk1.7.0_79就改为project-version="1.7.0",
3. org.eclipse.wst.common.project.facet.core.xml文件:将<installed facet="java" version="1.5"/>改成<installed facet="java" version="1.7"/>(jdk版本号),把 <installed facet="jst.web" version="2.3"/>改成 <installed facet="jst.web" version="2.5"/>
三、再次进入Project Facets查看,此时Dynamic web module已经被改成了2.5,如下:
同时将java版本修改为当前jdk版本1.7,如本机安装的jdk版本为jdk1.7.0_79就改为1.7。
四、项目右键,“Maven”下“Update Project”,将当前Maven项目更新。(该步骤很关键!!!)
参考资料:http://blog.csdn.net/steveguoshao/article/details/38414145
以上