1. 程式人生 > >Emacs開發Java之使用

Emacs開發Java之使用

maven工程 比較 global 設置斷點 classpath testng 鼠標 emacs variables

常用方法

JDEE的用法可以參考官方網站,我這裏只列出自己最常用的。由於我不用Ant了,所以基本上編譯都直接采用mvn命令,這些就不勞駕JDEE.java doc生成,也通過maven plugin來完成,不需要JDEE幫忙。

創建類

輸入命令:jde-gen-class-buffer
然後按照向導提示完成創建類文件的過程。相對比較簡單,但是能用了。

智能提示

在需要提示的地方按下組合鍵:C-c C-v C-. 註意,三個按鍵都需要按住Ctrl鍵。
智能提示有幾種方式(彈出窗口用於桌面版本,其他兩種可以用於服務器純字符界面),具體參見官方文檔。

源代碼跳轉

在需要跳轉的地方按下組合鍵:Ctrl c v y
前提是你正確配置了源代碼路徑。

註釋生成

在方法或者類的那行按下:Ctrl c v j

註意,在有模板類的情況下無法使用。遺憾啊!

import語句

命令jde-import-organize 可以幫助重新組織當前java文件裏面的import語句。而且也跟據字典順序進行排序。排序可以定制,參考JDEE文檔。

命令jde-import-kill-extra-imports 可以刪除當前Java文件裏面多余的import語句。

命令jde-import-all, C-c C-v z 可以導入當前java文件所有缺少的import語句。


查看API文檔

在要查看的類上直接按F1,會彈出一個窗口讓你選擇究竟是哪個文檔,選擇後,Emacs打開Chromium瀏覽器(前面配置好了)。

重構代碼

簡單修改一個類名,可以用JDE的菜單。不過大規模的重構最好還是用現代IDE來做,所以我通常都會裝一個NetBeans7.0.1,來幫我重構代碼。

如何調試

調試非常重要,我們可以通過命令行方式調試,不過JDEE提供了比較方便的功能,可以隨著單步命令的進行讓指針指向當前源代碼位置。下面列出三種常用調試。

查找源代碼

用命令jde-find,很牛的,試試看。
當然也可以切換到eshell,然後直接用grep -n -R ‘關鍵字‘ ./

普通Java application調試

確保.emacs文件中有:
(custom-set-variables
‘(jde-debugger (quote ("jdb")))

獲得更多信息:http://jdee.sourceforge.net/jdedoc/html/jdb-ug/jdb-ug-frame.html

Maven工程默認情況下:maven-compiler-plugin的debug屬性被設置為true,這樣編譯出來的文件已經可以調試了。

通過jde-run-application-class來指定調試啟動時的主類名稱。
比如:
(jde-set-variables
‘(jde-run-application-class "com.exactor.bulkupload.App")
...

如果調試啟動時要傳遞參數,可以通過jde-db-option-application-args來指定。

設置斷點:C-c C-a C-b

運行程序,打開App.java文件,然後按鍵:
C-c C-v C-d

然後用jdb命令吧,run 或者 cont等。

TestNG調試

確保prj.el或者~/.emacs文件中包含了:(推薦~/.emacs文件中包含)
‘(jde-db-option-connect-socket (quote (nil "5005")))

啟動testng實例:
mvn -Dmaven.surefire.debug test

輸入命令:jde-jdb-attach-via-socket
或者 選擇菜單(我不喜歡用鼠標)jdb->external process->attach via socket

設置斷點吧
然後輸入run命令

Web程序調試

1)假定你已經成功把web程序部署到glassfish 3.1 server上。並且jde-globalclasspath設置正確。
2)通過maven命令以調試方式啟動glasfish server
mvn org.glassfish.maven.plugin:maven-glassfish-plugin:start-domain
3)在瀏覽器中打開網站
4)選擇 Jdb->External Process->Attach To 菜單.
jde-db-option-connect-socket 允許你設置默認的遠程連接的地址和端口號.
5)設置斷點C-c C-a C-b.
6)在網頁上執行一些操作,使得程序停在你的斷點上。
斷點命中: "thread=http-thread-pool-8080-(2)", com.webt.pagebean.LoginPage.clickLoginButton(), line=94 bci=0

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://blog.csdn.net/jiangjunshow

Emacs開發Java之使用