Posted on 2006-07-30 14:38
繁星滿空 閱讀(4860)
評論(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了,就算是王者也不例外。