前话
最近复习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版本
<?xml version="1.0" encoding="UTF-8"?>
.
在项目的.setting文件夹下有个org.eclipse.wst.common.project.facet.core.xml文件,里面配置各种版本信息<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 版本能够对应
总结
各种不同技术之间的更新速度差异较大,不同技术之间的版本的支持无法同步更新迭代,会出现某一项技术更新太快而无法与某一项技术兼容,但是这一项技术又无法舍弃的情况,所以,就产生了这些情况。