Cannot change version of project facet Dynamic web module to 2.5

在Eclipse中新建了一個web項目,但是項目上報錯,有紅色小叉叉,但是展開項目,子項目上並沒有報錯,單是這樣看的話找不到錯誤在哪裏。打開Markers窗口,提示pom.xml文件有錯,但是無論怎麼改都不起作用,這個問題讓人很無語,知道有錯,但卻不知道該怎麼改。不過,在偉大的江江同學的幫助下,最後終於解決了。

原來是這樣的:我們用Eclipse創建Maven結構的web項目的時候選擇了Artifact Id爲maven-artchetype-webapp,由於這個catalog比較老,用的servlet還是2.3的,而一般現在至少都是2.5,在Project Facets裏面修改Dynamic web module爲2.5的時候就會出現Cannot change version of project facet Dynamic web module to 2.5,如圖:

首先在出錯文件上右擊:

找到Porject Facets,把Dynamic Web Module的版本改爲2.5。


貌似很簡單嘛,但是,這個時候往往是不允許修改的,我們在修改這裏之前,還要做一些準備工作才行。那麼,都需要做哪些準備工作呢?

第一、打開項目的web.xml,把Servlet改成2.5

修改之前:

  1. <!DOCTYPE web-app PUBLIC    
  2.  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"    
  3.  "http://java.sun.com/dtd/web-app_2_3.dtd" >    
  4.     
  5. <web-app>    
  6.   <display-name>Archetype Created Web Application</display-name>    
  7. </web-app>    

修改之後:
  1. <web-app version="2.5"   
  2.     xmlns="http://java.sun.com/xml/ns/javaee"   
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  

第二、修改項目的設置,在Navigator下打開項目.settings目錄下的org.eclipse.jdt.core.prefs





修改爲

  1. eclipse.preferences.version=1  
  2. org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled  
  3. org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7  
  4. org.eclipse.jdt.core.compiler.compliance=1.7  
  5. org.eclipse.jdt.core.compiler.problem.assertIdentifier=error  
  6. org.eclipse.jdt.core.compiler.problem.enumIdentifier=error  
  7. org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning  
  8. org.eclipse.jdt.core.compiler.source=1.7  

打開org.eclipse.wst.common.component,將project-version修改爲1.7.0
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <project-modules id="moduleCoreId" project-version="1.7.0">    

開org.eclipse.wst.common.project.facet.core.xml,<installed facet="java" version="1.7"/>,  <installed facet="jst.web" version="2.5"/>
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <faceted-project>  
  3.   <fixed facet="wst.jsdt.web"/>  
  4.   <installed facet="wst.jsdt.web" version="1.0"/>  
  5.   <installed facet="java" version="1.7"/>  
  6.   <installed facet="jst.web" version="2.5"/>  
  7.   <installed facet="jst.jaxrs" version="1.1"/>  
  8.   <installed facet="jst.jsf" version="2.0"/>  
  9. </faceted-project>  

好了,準備工作完成,再打開看看,是不是已經把Dynamic web module改成了2.5


總結:

雖然完成了,但是這種方法很麻煩,應該還有其他更加簡便且治本的方法,應該可以預先設置,還應該再找找的。先解決問題再說。
發佈了21 篇原創文章 · 獲贊 13 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章