JDEE
目次
概要
Java開発環境。
リリースファイルは2010-01-22以降更新されていないが、SVN上は更新されている。
Mavenを利用している人は、malabar-modeの方が便利かもしれない。
補完ができれば十分なら ajc-java-complete がよさそう。
ソースの取得
ここでの説明はつねに最新版にしたがうようにしています。(現在:2.3.2)
JDEEより必要なものを取得してください。
- EIEIO- Speedbar
- Semantic- elib(直リンク)、
- jde-latest(直リンク)
関連が多いので注意。
できればBeanShellを最新にする方がよい。BeanShell
導入
Mac OS Xでは$JAVA_HOME/libにtools.jarが存在しないため、M-x bshやbshを利用する関数がエラーになる。
これがエラーになっているとjavac serverの機能やC-c C-v C-.といった関数補完が利用できないのでかなり不便です。
修正は、jde/lisp/jde.elのjde-get-tools-jarの中(366行目)の"Classes/classes.jarを
/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Classes/classes.jar
のように書きかえておきます。
バイトコンパイルは以下のようなShell Scriptを作成するなどしておけば簡単です。
実際はもうすこし複雑にしてますが。。まあ改造してください。
#!/bin/sh
for d in ~/tmp/lisp/eieio ~/tmp/lisp/speedbar ~/tmp/lisp/semantic ~/tmp/lisp/jde/lisp; do
cd ${d}
make
done
Meadowではsemanticのsemantic-util-modes.elで(:underline "red")となっている場所を(:underline t)に変更する必要がある。
Key
||C-c C-v C-c||コンパイル|| ||C-c C-v C-r||実行|| ||C-c C-v C-b||ビルド|| ||C-x '||エラー箇所へjump|| ||C-c C-v C-a||アプレットの実行|| ||C-c C-v C-d||デバッガ起動|| ||C-c C-v j||Javadoc コメント作成|| ||C-c C-v C-s||Speedbar起動|| ||C-c C-v C-n||JDKのドキュメントを表示|| ||C-c C-v C-w||クラスのJDKドキュメントを表示|| ||M-x jde-bug-set-breakpoint||カーソル位置にブレークポイントを設定|| ||M-x jde-bug-clear-breakpoint||カーソル位置のブレークポイント解除|| ||C-c .||編集スタイルの切り替え|| ||C-c C-v .||メソッド補間:最新CVS版Emacs21+最新JDEEなら動作します|| ||C-c C-v C-.||メソッド補間(コンテクストメニュー):最新CVS版Emacs21+最新JDEEなら動作します||
Antとの連係
(setenv "JAVA_HOME" "/Library/Java/Home")
(setenv "ANT_HOME" "/sw/lib/ant")
;;(require 'jde-ant) ;;JDEE2.2.8の時は必要
(setq jde-ant-enable-find t)
(setq jde-ant-program "/sw/bin/ant")
(setq jde-ant-read-target t) ;;Targetを選択するための変数
(setq jde-build-function (quote (jde-ant-build)))
最近はANT1.5なのでパスがちょっと違うがとりあえずこのままにしとく。
C-c C-v C-bでコンパイルする。Targetを聞いてくる。Tabで補完可能。defaultでいいならそのままretunする。
設定がうまくいかない場合
M-x compile => ant -emacs -find build.xml
という手もあるがこれの方がめんどくさい :-?
APIドキュメント設定
C-c C-v C-nした時そのままだとエラーになる。emacs-w3mでローカルのAPIドキュメントを閲覧する用に設定した方がよい。
(autoload 'w3m "w3m" "Interface for w3m on Emacs." t)
(autoload 'w3m-find-file "w3m" "w3m interface function for local file." t)
(setq browse-url-browser-function 'w3m-browse-url)
(autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t)
(setq jde-jdk-doc-url "file:///Users/sakito/docs/api/overview-summary.html")
起動しようとして
call-interactively: Symbol's value as variable is void: browse-url-new-window-p
のエラーがでる場合があります。emacs21ではbrowse-url-new-window-flagに変更になったためです。
最新のJDEEにするか、コンパイル前にbrowse-url-new-window-pを利用している場所をすべて変更しておいてください。
jde-run.el、jde-bug.elに一箇所ずつ、jde.elに三箇所ある。
ECBとの連携
EmacsCodeBrowser を利用すると非常に便利です。
JSPの編集
HTMLHelperModeもしくはMMM-modeを利用します。
Checkstyleの利用
Checkstyleを利用してコーディング規約のチェックをします。
M-x jde-chckstyle
です。
ぼくは以下の設定がしてあります。
;; checkstyleの形式
(setq jde-checkstyle-option-rcurly (list "alone"))
最新版にした時の注意点
JDEEの最新版は旧とやや変化しています。
javac serverの機能がありますが従来どうりjavacでコンパイルしたい場合は以下を設定します。
(setq jde-compiler (list "javac" ""))
javac serverの場合は以下を設定します。
(setq jde-jdk '("1.3.1"))
(setq jde-jdk-registry '(("1.3.1" . "/Library/Java/Home")))
現在の設定
(setenv "JAVA_HOME" "/Library/Java/Home")
(setenv "ANT_HOME" "/sw/lib/ant")
(add-to-list 'load-path (expand-file-name "~/emacs/lisp/jde/lisp"))
(add-to-list 'load-path (expand-file-name "~/emacs/lisp/semantic"))
(add-to-list 'load-path (expand-file-name "~/emacs/lisp/elib"))
(add-to-list 'load-path (expand-file-name "~/emacs/lisp/eieio"))
(add-to-list 'load-path (expand-file-name "~/emacs/lisp/speedbar"))
(require 'jde)
(setq jde-jdk-doc-url "file:///Users/sakito/doc/Java1.3.0/docs/ja/api/overview-summary.html")
(setq compilation-window-height 8)
;(require 'jde-ant)
(setq jde-ant-enable-find t)
(setq jde-ant-home "/sw/lib/ant")
(setq jde-ant-program "/sw/bin/ant")
(setq jde-ant-read-target t)
(setq jde-build-function (quote (jde-ant-build)))
(setq jde-jdk '("1.3.1"))
(setq jde-jdk-registry '(("1.3.1" . "/Library/Java/Home")))
;(setq jde-compiler (list "javac" ""))
;; クラスパス設定(一部省略)
(setq jde-global-classpath '(
"/sw/share/java/junit/junit.jar"
"/sw/share/java/log4j/log4j.jar"
"/sw/lib/xalan-j/xalan.jar"
"/sw/lib/xerces-j/xerces.jar"
"."
))
(add-hook 'java-mode-hook
'(lambda()
(setenv "LC_ALL" "en") ;; エラーメッセージの英語化をして文字化け回避
(setq indent-tabs-mode nil)
(setq c-basic-offset 4)
(setq c-set-style "java")
))
トラブルシューティング
Carbon Emacs特有かどうか不明ですが問題が発生する事があるのでメモ
補完系コマンドがうまく動作しない
C-c C-v .などが動作しない場合は最新のEmacsにしてください。
また、C-c C-v C-.で出てきたコンテクストメニューから選択できない問題があるようです。
Semantic Imenu override problem. (Internal bug)
が出ます。これはまだ対処されていない模様です。
Ant buildが効かなくなる
新規にJavaソースを開くと有効でない場合があります。具体的にはC-c C-v C-bするとmakeでコンパイルしようとします。
ぼくはめんどくさいのでソースを直接変更して対処しました。そろそろantを標準にしてもいいのではないだろうか、、
関連リンク
JDEE:英語がよめればここだけで十分です。というかここ以外にあまり最新の情報はない。
JDEE:Java Development Environment forEmacs:ここは詳しい。最新の記述がされている。
JDEユーザーズガイド:翻訳中
http://www.ysnb.net/meadow/meadow-users-jp/2002/msg00255.html
