解決一個java facets問題

  常常被一個問題困擾:
  JavaServer Faces 2.2 can not be installed : One or more constraints have not been satisfied.
  JavaServer Faces 2.2 requires Dynamic Web Module 2.5 or newer
  eclipse裏面是這樣子的:
  經過Type來看是由於maven的配置致使的。
  今天決定解決這個問題:
  以前作的一些嘗試:打算選擇搞版本的Dynamic Web Module,可是報錯,說是和其餘組件衝突。
  因而你須要作兩件事情:
  1. 修改web app版本;
  maven默認生成的web.xml中webapp的版本是2.3的:
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" >
  修改成web-app爲4.0版本:
1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 4.0//EN"
3 "http://java.sun.com/dtd/web-app_4_0.dtd" >
  其實只要是3.0以上就能夠,我這裏寫的是4.0,最新版本的
   
  開始好用,可是當工程從新被打開後,又報錯,因而修改成(!DOCTYPE部分刪掉):
1 <webapp xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
其實你能夠到http://java.sun.com/dtd/上面去看看(如今已經跳抓到了oracle java的頁面)裏面根本沒有web-app_ 4_0.dtd,最高版本爲2.3,致使Dyanmaic Web module最高版本只能配置到2.3;因此dtd的格式是沒法知足Java Server Factes的要求;因而須要改dtd聲明爲xsd的聲明。
而後在工程右鍵,而後在Project Facts的頁面取消勾選Dynamic Web Module;而後更新工程,問題解決了。其實你回到Project Facts裏面看到Dynamic Web Module又重新勾選上了,只不過版本成爲了3.1;能夠看出來eclipse的這個wst組件處理邏輯就是從web.xml文件中讀取定義的web-app版本(由於Dynamic Web Module是web的模板,因此讀web.xml);而後設置對應的版本號,當發現自身最高版本是3.1(我用的是Neon.1a Release (4.6.1),貌似最高就是3.1)因而設置爲了最高版本。
以前報錯的緣由就是由於須要2.5以上版本的Dynamic Web Module(推測是由於maven的web模板要求的);可是由於web.xml裏面的DTD限制了web app的版本,即限制了Dynamic Web Module的版本;因而爆了那個錯誤;提升了web.xml的版本以後,在取消勾選就是讓wst組件本身再去重置一下該版本。
 
參考
相關文章
相關標籤/搜索