在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
修改之前:
- <!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>
修改之後:
- <web-app version="2.5"
- 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_2_5.xsd">
第二、修改項目的設置,在Navigator下打開項目.settings目錄下的org.eclipse.jdt.core.prefs
修改爲
- 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
打開org.eclipse.wst.common.component,將project-version修改爲1.7.0
- <?xml version="1.0" encoding="UTF-8"?>
- <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"/>
- <?xml version="1.0" encoding="UTF-8"?>
- <faceted-project>
- <fixed facet="wst.jsdt.web"/>
- <installed facet="wst.jsdt.web" version="1.0"/>
- <installed facet="java" version="1.7"/>
- <installed facet="jst.web" version="2.5"/>
- <installed facet="jst.jaxrs" version="1.1"/>
- <installed facet="jst.jsf" version="2.0"/>
- </faceted-project>
好了,準備工作完成,再打開看看,是不是已經把Dynamic web module改成了2.5
總結:
雖然完成了,但是這種方法很麻煩,應該還有其他更加簡便且治本的方法,應該可以預先設置,還應該再找找的。先解決問題再說。