前話
最近複習JavaWeb,在看一些視訊的時候,發現視訊中建立dynamic web 檔案時候,會在 version 版本中把預設的 3.0 改為 2.5 。以前初學的時候也沒有深入的考慮,現在再看視訊發現了這個問題,于是就想多了解一些這樣做的原因。
- version 選擇的場景
- 問題焦點
預設版本為3.0,且可選版本不唯一,為什麼不選擇最新的版本3.0,或者其他老版本,而唯獨選擇了版本2.5。 那麼2.5和3.0的差異在哪裡,選擇2.5在寫項目時候又有什麼優于3.0的地方呢?
一些整理
- Web Module Version 概念
Dynamic web module version即表示所建web工程的版本,不同版本的web項目有不同的應用環境。例如,3.0的web項目就不能部署在JBoss5以及早起的伺服器上。
- Web Module Version 與 Tomcat 之間的對應關系
dynamic web module 2.4 << ------ >> Tomcat 5.5
dynamic web module 2.5 << ------ >> Tomcat 6.0
dynamic web module 3.0 << ------ >> Tomcat 7.0
- 常見因 version 版本差異引起的錯誤提示
Tomcat version 5.5 only supports J2EE 1.2, 1.3, 1.4 Web modules
Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web
modules
Project facet Dynamic Web Module version 3.0 is not supported.
Project facet Dynamic Web Module version 2.5 is not supported.
- 如何解決上述版本差異引起的問題?
問題的核心是 version 與 Tomcat 版本不一緻。是以,隻需修修改 version 或者 Tomcat 的版本使兩者處于一種互相對應的地位即可,以下是兩種解決方案
1.修改配置檔案中的 version版本
.
在項目的.setting檔案夾下有個org.eclipse.wst.common.project.facet.core.xml檔案,裡面配置各種版本資訊
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project> <fixed facet="java"/> <fixed facet="jst.web"/> <fixed facet="wst.jsdt.web"/> <installed facet="java" version="1.7"/> <installed facet="jst.web" version="3.0"/> <installed facet="wst.jsdt.web" version="1.0"/> </faceted-project>
将< installed facet=“jst.web” version=“3.0”/>修改成< installed facet=“jst.web” version=“這裡填入要修改的版本”/>即可。
.
2.更換對應版本的 Tomcat ,安裝後更改 eclipse 中 Tomcat 的預設版本後重新開機即可
針對開始提問的回答
- 為什麼選擇 3.0 而不選擇其他版本
主要因為相容性問題,也就是 juno 版本才支援 Dynamic Web Module 3.0 的,連最常用的galileo也隻能支援 2.5 。且不同的 tomcat 與 Web Module Version 之間往往因為版本差異引起各種部署及其他問題,因而選擇 2.5 的原因是能更多的适應于不同的用戶端之間,盡可能的避免了了一些因為版本沖突引起的錯誤
- 當遇到因版本差異而導緻的項目無法部署時候如何解決?
方法1:按照前面所講的方式修改 version 的版本
方法2:将 Tomcat 的版本更新,使得 version 和 Tomcat 版本能夠對應
總結
各種不同技術之間的更新速度差異較大,不同技術之間的版本的支援無法同步更新疊代,會出現某一項技術更新太快而無法與某一項技術相容,但是這一項技術又無法舍棄的情況,是以,就産生了這些情況。