Posted on 2006-07-30 14:38
繁星满空 阅读(4847)
评论(1) 编辑 收藏 所属分类:
Java
Eclipse
,毫无疑问,是当今
java
集成开发环境(
IDE
)之王者,无论是简单的
java
工程,
web
开发,
RCP
开发,甚至是
C/C++
开发,都提供了有力支持,对
CVS
提供了方便快捷的支持,其特有的插件方式,更是聚集了一大批有实力的厂商去开发
Eclipse
插件。
Eclipse
社区生机勃勃,产品更新速度十分迅速,不过今天我不是去夸
Eclipse
,而是列举利用
Eclipse
开发项目时碰到的一些怪问题,和大家一起分享。由于我们进行的是
web
开发,所以
Eclipse
的版本是
wtp-all-in-one-sdk-R-1.5.0-200606281455-win32.zip
,这个版本是
WTP
的
all in one
版本,是基于
Eclipse3.2
的,下载地址:
http://download.eclipse.org/webtools/downloads/
。
怪问题一:工程关一下,再开一下,就可以找到
lib
库。
最近做一个项目,前期我负责搭建工程项目和基本架构。
JDK
我选择的是
1.5.0
,
Server
我选择的
jakarta-tomcat-5.5.9
,首先我新建了一个
web
项目,如下图:
然后我把整理好的lib库,拷贝至web目录下的WEB-INF/lib下,没有问题,因为在.classpath文件里有这句:
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
所以,在build的时候,Eclipse可以找到WEB-INF/lib下的jar包,如下图:
然后,我把自动生成的pojo/hbm.xml/dao/manager等文件一股脑全部拷贝到项目里的src文件夹下,工程可以正常build,可以run on server,项目可以正常启动。
接着我就乐呵呵的把项目共享到CVS服务器上,然后找了一个开发人员,准备在他的机器上配置开发环境。Eclipse、tomcat的版本我们都是统一的,当把项目从CVS上下载下来时,傻了眼,build通不过,全是小红叉,一看项目的java build path,里面的jar包都不见了,本来应该是在Web App Libraries下的呀,不见就不见了吧,我把jar包手工导入进来,项目编译没有问题了,然后run on server,发现tomcat启动了,但根本就没有找到这个项目,我查看了eclipse \workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0,这个文件夹下有那个项目呀,可为什么不启动呢。
正在我头大的时候,一位资深的同事和我说,你把项目先close,再open试试,如下图:
我半信半疑的试了试,啊,还真可以了,找到了lib了,同事说这个问题在Eclipse3.1里就有,3.2可能还没解决。Lib找到了,tomcat启动也正常了,关一下,再开一下,问题就没了,Eclipse还真搞笑。
怪问题二:只有一个项目,Tomcat启动了两次。
在Eclipse里只新建了一个项目,因为该项目里表太多,而技术架构是Spring+Hibernate,所以启动是比较慢,需要初始化Hibernate映射文件和Spring的配置文件,因为这个原因所以和别的项目分开,用了一个新的Eclipse环境,项目名称假设是TestProject,设置Context Root时用了test,然后启动项目run on server,就看见一行行的log,半天后,tomcat终于启动了,然后我逐行去看log,发现项目启动了两次,从日志可以明显的看出,Hibernate配置文件和Spring配置文件初始化了两次,真是奇怪了,难道是web.xml配置出错了吗,检查半天没问题。
然后我就去查看workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0,在webapps下就只有一个TestProject,没问题呀,然后查看work\Catalina\localhost文件夹,看到有TestProject和test两个文件夹,原因就在这,所以tomcat就启动了两次。然后我把tmp0文件夹删除,把Context Root改成TestProject,重新设置server,然后run on server,这样tomcat在半天启动后,查看log时,发现启动了是一次,问题解决。
我不否认Eclipse给我们带来生产力的提高,但我们享受java开源世界的成果时(当然我们应该也为开源做出自己的贡献J),也要保持警觉,当我们确认我们操作没问题时却出现问题,那就是软件本身有bug了,就算是王者也不例外。