摘要:
在新建Maven的Web項目時,本來沒有錯誤,使用Maven的Update Maven Project時,項目有錯誤提示:Cannot change version of project facet Dynamic web module to 2.5,本文主要講一下該錯誤提示的解決方案。java
1、首先找到項目的web.xml文件,能夠看到內容以下:web
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://Java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> </web-app>
能夠看到因爲catalog比較老,致使新建的模板中的servlet版本較老,仍是2.3tomcat
2、找到tomcat安裝目錄下的webapps文件夾,去ROOT項目下複製web.xml,內容以下:
app
<?xml version="1.0" encoding="utf-8"?> <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" metadata-complete="true"> </web-app>
這樣就把servlet版本改爲了3.0eclipse
3、在Navigator視圖下查看項目的.settings文件夾webapp
一、在Eclipse菜單欄中的Window選項下選擇:Show View,在Show View選項下選中Navigator,這樣就能夠打開Navigator視圖maven
二、在Navigator視圖下查看項目的.settings文件夾ui
注:.settings文件夾下的文件簡介:編碼
1).jsdtscope:文件定義了web項目中的源碼路徑,也就意味着只有web project纔會有這個配置。這些源碼Eclipse會進行validate(若是validate沒有禁用)。這個文件在實際開發中最大的價值在於定義JS文件的例外路徑code
2)org.eclipse.core.resources.prefs:規定項目內的文件的編碼
3)org.eclipse.jdt.core.prefs:指定java編譯特性,例如java版本之類
4)org.eclipse.m2e.core.prefs:指定一些和maven相關的配置
5)org.eclipse.wst.common.component:規定項目中如何組裝成一個webapp
6)org.eclipse.wst.common.project.facet.core.xml:指定項目中啓用那些facet和facet的版本
7)org.eclipse.wst.jsdt.ui.superType.container:用途不詳,待查
8)org.eclipse.wst.jsdt.ui.superType.name:用途不詳,待查
9)org.eclipse.wst.validation.prefs:用途不詳,待查
以上這些配置均可以經過可視化界面進行配置,當一些配置莫名其妙失靈時,能夠嘗試着手動更改上面這些配置文件中的配置信息來糾正問題。
三、回到正題,先修改org.eclipse.jdt.core.prefs(java編譯信特性),我用的是java1.8,配置信息以下:
eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.compliance=1.8 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.8
四、修改org.eclipse.wst.common.component(項目中組裝webapp的規則),更改project-version爲1.6.0:
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.6.0"> <wb-module deploy-name="service"> <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/> <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/> <property name="context-root" value="service"/> <property name="java-output-path" value="/service/target/classes"/> </wb-module> </project-modules>
五、修改org.eclipse.wst.common.project.facet.core.xml,修改java version爲1.8,jst.web version爲3.0
<?xml version="1.0" encoding="UTF-8"?> <faceted-project> <fixed facet="wst.jsdt.web"/> <installed facet="jst.web" version="3.0"/> <installed facet="wst.jsdt.web" version="1.0"/> <installed facet="java" version="1.8"/> </faceted-project>
4、完成上述步驟後,在Project Explorer視圖下,右擊項目選中Maven選項,在彈出的選項中選中Update Project,而後點擊OK,這時發現報錯已經消失了