#pragma section-numbers off
[[TableOfContents]]

= 概要 =
Java開発環境。

リリースファイルは2010-01-22以降更新されていないが、SVN上は更新されている。

["Maven"]を利用している人は、[https://github.com/buzztaiki/malabar-mode malabar-mode]の方が便利かもしれない。

補完ができれば十分なら [https://github.com/jixiuf/ajc-java-complete ajc-java-complete] がよさそう。

= ソースの取得 =
ここでの説明はつねに最新版にしたがうようにしています。(現在:2.3.2)

[http://jdee.sourceforge.net/ JDEE]より必要なものを取得してください。

 *[http://cedet.sourceforge.net/eieio.shtml EIEIO]
 *[http://cedet.sourceforge.net/speedbar.shtml Speedbar]
 *[http://cedet.sourceforge.net/semantic.shtml Semantic]
 *[http://jdee.sunsite.dk/elib-1.0.tar.gz elib](直リンク)、
 *[http://jdee.sunsite.dk/jde-latest.tar.gz jde-latest](直リンク)

関連が多いので注意。

できれば[http://www.beanshell.org/ 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を標準にしてもいいのではないだろうか、、

= 関連リンク =
[http://jdee.sunsite.dk/ JDEE]:英語がよめればここだけで十分です。というかここ以外にあまり最新の情報はない。

[http://www.02.246.ne.jp/~torutk/jdee/jdee.html JDEE:Java Development Environment for Emacs]:ここは詳しい。最新の記述がされている。

[http://users.hoops.ne.jp/turtle_wide/programming/jdeeug.htm JDE ユーザーズガイド]:翻訳中

[http://www.bekkoame.ne.jp/~to-mo-ki/dev/meadow/node22.html jde-mode(Java)の使用方法]

http://www.ysnb.net/meadow/meadow-users-jp/2002/msg00255.html


----
CategoryEmacs
CategoryJava