項目需要,使用Eclipse初次java開發,過程中遇到很多問題,有的問題可能很低級,這裡做個簡單的總結,怕忘記:
1、Dyanamic Web Project工程引用普通java工程的類,可能會出現NoClassDefFoundError問題
一個簡單的java工程和一個servlet樣本程式,servlet中調用了Test工程中Test類的靜態方法test():
很顯然TestDW工程需要某種方式“引用”Test工程,剛開始開始我的方式是:右擊TestDW(Dynamic Web Project)工程->選擇Buid Path->Projects->添加Test工程:
這種方式我之前嘗試了在普通java工程之間進行引用是沒問題的,但是在Dynamic Web工程就會出現問題,雖然編譯時間候不會有錯,但一運行就會報java.lang.NoClassDefFoundError的異常:
解決方式:
右擊TestDW(Dynamic Web Project)工程->選擇Properties->Deployment Assembly->Add->Project->選擇Test工程。
 
2、Server Runtime Environment 配置問題
需要在Eclipse中調試或運行Servlet程式需要建立Server,但是遇到了無法建立的問題,這是因為Server Runtime Environment沒有配置的問題。
點擊Window->Preferences->Server->Runtime Environment->Add->根據本機情況選擇tomcat安裝路徑即可:
其實這個配置不對的話,也無法使用HttpServlet相關的類的。
 
3、文本編輯中文亂碼問題:
右擊工程->Properties->Text file encoding->Other->UTF-8。
 
4、智能提示
從VS切換到Eclipse還是非常的不習慣,最大的就是智能提示,Eclipse預設的設定對新手挺不方便,不過簡單設定下還是很不錯的:
Window->Properties->Java->Editor->Content Assist,將Auto activation delay設定短一點比如20毫秒,將Auto activation triggers for java從a-zA-Z和.都填上:
另外在使用的過程中慢慢發現的一些快速鍵也很實用:
Ctrl+Shift+f 自動美化代碼格式
Ctrl+Shift+O 自動匯入需要的包/刪除不多餘引入的包等等。
說到Ctrl+Shift+f還有一個問題是這個熱鍵跟搜狗IME的“簡繁體快速鍵”熱鍵衝突:
 
5、引用第三方類庫的問題
可以在Buid Path中選擇Add External JARs但這一引用的jar包使用的是絕對路徑,項目拷到別人的電腦上可能就有問題,我現在使用的方式是在工程下建一個lib目錄將需要用到的第三方jar包到放進去,然後在Buid Path中選擇Add JARs添加工程目錄下的jar包,這樣使用的就是相對路徑。
另外我發現好像Dynamic Web工程需要的第三方jar包需要放到WebContent Web-INF下的lib目錄下。
 
6、找不到源碼
調試或f3的時候提示找不到源碼: 
很簡單點擊Attach Source 添加Jdk安裝目錄下的src.zip就可以了。
 
7、xstream序列化底線問題
項目中使用xstream進行序列化操作,但使用過程中同事發現一個奇怪的問題,就是還原序列化的某個欄位中帶有一個底線的話(比如biz_result),但實際上返回的序列化結果為biz__result,多了一個底線,解決這個問題如下使用xstream:
@SuppressWarnings("deprecation")XmlFriendlyReplacer replacer = new XmlFriendlyReplacer("__", "_");@SuppressWarnings("deprecation")HierarchicalStreamDriver hierarchicalStreamDriver = new XppDriver(replacer);XStream xStream = new XStream(hierarchicalStreamDriver);
 
更多xstream的用法參看官方文檔:http://xstream.codehaus.org/alias-tutorial.html
 
8、代碼同步的問題
開發中遇到另外一個頭痛的問題就是代碼同步的問題,因為之前一直在用SVN,用C#開發的工程代碼同步比較簡單,VS處理很多依賴關係,不需要我們操心。一開始我將整個java的workspace上傳到SVN,然後其他同事check下來後各種問題,我猜測是因為我把一些工程相互之間依賴關係的檔案也上傳上去了(比如.classpath、.settings等,具體這些檔案幹什麼的後面慢慢研究),最後沒辦法只能每次只提交java檔案,但是這樣檔案一多,包層次一多就非常的頭痛。VS裡有SVN用戶端外掛程式,我想eclipse中肯定也有,結果網上一搜果然不出所料,就是subclipse。
eclipse中以外掛程式的形式安裝subeclipse非常簡單:
Help->Install New Software,直接輸入subeclipse的安裝就行了。
安裝後就可以在Window->Preferences->Team中看到SVN的相關配置了:
如果之前workspace中的代碼就是從SVN上check下來的話,那麼右擊工程->Team->Share Project->SVN->……後就可以在Team中看到相關的版本控制操作了:
工程Share後跟在VS中一樣也有各種形狀的表徵圖表示不同的意思,比如黑底白色的星狀代表代碼沒有同步到SVN上跟VS中的紅色小方塊一個意思:
 
 
8、split特殊字元的問題
1、如果用“.”作為分隔的話,必須是如下寫法:String.split("\\."),這樣才能正確的分隔開,不能用String.split(".");
2、如果用“|”作為分隔的話,必須是如下寫法:String.split("\\|"),這樣才能正確的分隔開,不能用String.split("|");
“.”和“|”都是逸出字元,必須得加"\\";
3、如果在一個字串中有多個分隔字元,可以用“|”作為連字號,比如:“a=1 and b =2 or c=3”,把三個都分隔出來,可以用String.split("and|or");