![]() |
JDEE Java開発環境 |
JDEEについては新たなWebページに書き直し作業中です。このページは更新停止しています。
Meadow(Emacs20.x)には標準でcc-modeというC言語系のソースコード編集マクロ機能が備わっています。このcc-modeは、Java言語ソース編集用のjava-modeを含んでいます。このjava-modeだけでもJavaソースコードの自動インデント、括弧の対応、コンパイルメニューなどが利用できます。しかし、Java
Development Environment for Emacs(JDEE)というJava開発用マクロ機能(Emacs
Lispパッケージ)を導入すると、並みのIDE(統合開発環境)を凌駕する快適な開発環境を手にすることができます。
また、いわゆる市販の統合開発環境と違って日々開発が続けられ公開されているので機能が日々進化している点もいいですね。もちろん最新のJDK(βリリースも含め)にもすぐに対応しています(2001.8現在JDK1.4βで使用してます)。
JDEEはPaul Kinnucan氏によって作成されています。すばらしいツールをありがとう。
MeadowでJDEEを使ったJava開発環境に必要なEmacs Lispパッケージを入手します。以下において、ディレクトリはMeadowをD:\win32app\Meadowにインストールした場合を想定しています。
| パッケージ名 | 必須バージョン | ファイル名 |
|---|---|---|
| JDEE | 2.2.8 | jde-latest.tar.gz |
| eieio | 0.16以降(*1) | eieio-0.17beta2.tar.gz |
| speedbar | 0.13以降 | speedbar-0.14beta1.tar.gz |
| semantic bovinator | 1.4β5以降 | semantic-1.4beta9.tar.gz |
| elib | 1.0 | elib-1.0.tar.gz |
| w3 | w3-4_0pre_46.tar.gz |
(*1)ただし eieio-0.17beta1は除く
| D:\win32app\Meadow | site-lisp | jde-2.2.8 | jdeを展開したディレクトリ |
| eieio-0.17beta2 | eieioを展開したディレクトリ | ||
| speedbar-0.14beta1 | speedbarを展開したディレクトリ | ||
| w3-4.0pre.46 | w3を展開したディレクトリ | ||
| semantic-1.4beta9 | semanticを展開したディレクトリ | ||
| elib-1.0 | elibを展開したディレクトリ |
JDEE(Java Developing Environment for Emacs)は、Emacs環境からJDKを使って開発するためのEmacs
Lispパッケージです。エディタ上からソース編集、コンパイル、エラー行へのタグジャンプ、実行、ソースレベルデバッグ等が可能になります。
メニューバーにClassesが加わり、表示しているソースのクラスの変数、メソッド等がメニューで一覧・ジャンプできる機能、Java文法を解析してspeedbarを作る、といった改良が加えられています。
http://jdee.sunsite.dk/
インストールは、tarでアーカイブを解凍すればOk。バイトコンパイルをするならば、jde展開ディレクトリの中にあるlisp/makefileを下記のように実際のファイル配置先ディレクトリに合わせて編集してからmakeツールを実行します。
make EMACS=d:/win32app/Meadow/1.14/bin/MeadowNT.exe
をbash上で実行します。
echo "(add-to-list 'load-path \"../../semantic\")" >> jde-compile-script-init echo "(add-to-list 'load-path \"../../speedbar\")" >> jde-compile-script-init echo "(add-to-list 'load-path \"../../elib\")" >>jde-compile-script-init echo "(add-to-list 'load-path \"../../eieio\")" >>jde-compile-script-init |
上記の赤個所を、ファイル配置先ディレクトリ名にあわせて修正します。
| semantic | → | semantic-1.4beta9 |
| speedbar | → | speedbar-0.14beta1 |
| elib | → | elib-1.0 |
| eieio | → | eieio-0.17beta2 |
JDEE2.2.8に関するパッチは現在ありません。
JDEEのlispファイルは、CVS webを介してインターネットで取得可能です。
http://sunsite.dk/cvsweb/jde/lisp/
| 修正ファイル | 推奨 | 元Ver | 新Ver | 内容 | 変更者 |
訂正:
emacsパッケージをカスタマイズする拡張機能。JDEの各種設定もこのcustomパッケージを利用している。Meadow1.14に標準搭載のcustomはバージョンが1.9900とJDEが必要としている1.9960より古いため、別途入手します。
http://www.dina.kvl.dk/~abraham/custom/
インストールは、tarでアーカイブを解凍すればOk.バイトコンパイルをするならば、
make EMACS=d:/win32app/Meadow/1.15/bin/MeadowNT.exe
をbash上で実行します。
JDEが使用するObject Oriented Lispパッケージ。
http://cedet.sourceforge.net/eieio.shtml
インストールは、tarでアーカイブを解凍すればOk.バイトコンパイルをするならば、
eieio-0.17beta2$ make EMACS=d:/win32app/Meadow/1.15/bin/MeadowNT.exe
をbash上で実行します。
この新しいspeedbarを利用してブラウズを大きく改善しています。
http://cedet.sourceforge.net/speedbar.shtml
インストールは、tarでアーカイブを解凍すればOk.バイトコンパイルをするなら
speedbar-0.14beta1$ make EMACS=d:/win32app/Meadow/1.15/bin/MeadowNT.exe
をbash上で実行します。
speedbarをインストールするのに、w3のパッケージが必要となります。新しいバージョンでなくてもよさそうです。
http://www.cs.indiana.edu/elisp/w3/docs.html
Meadow 1.14用のw3-4.0pre.46を、こせきさんのMeadowページの公開logから入手します。
これを展開します。なお、infoファイルがMeadowの下の1.14/infoディレクトリに展開されてしまうので、これを1.15/infoの中に移動させます。
torutk$ cd /win32app win32app$ tar xvfz w3-4.0pre.46-for-Meadow1.14-2.tar.gz win32app$ mv Meadow/1.14/info/* Meadow/1.15/info win32app$ rm -r Meadow/1.14 |
インストールは、作業用の空きディレクトリにおいて、tarでアーカイブを解凍する。次に、build.batを次のように修正する。
set FALLBACKEMACSDIR=d:\win32app\Meadow\1.15
set EMACS=%EMACSDIR%\bin\MeadowNT.exe
そして、build.batを実行する。
あとはsite-lispにコピーする。(正しくはないので、下記URLを参照ください)
Meadowにw3をインストールする方法がUENO TetsuyukiさんのWebページで解説されています。
http://uenox.hoops.livedoor.com/meadow/emacsw3.html
JDEがJavaソースを解析するのに使っている。
http://cedet.sourceforge.net/semantic.shtml
インストールは、tarでアーカイブを解凍すればOk.バイトコンパイルをするならば、
semantic-1.4beta9$ make EMACS=d:/win32app/Meadow/1.15/bin/MeadowNT.exe
をbash上で実行します。
JDEがJavaソースを解析するのに使っています。(JDE-2.2.3から必要になりました)
インストールは、tarでアーカイブを解凍すればOK(か?)
設定方法については、下記Webサイトが詳しいです。
;; Java mode setting ; JDE loading (require 'jde) |
jde.elをロードする。site-lispの下に展開しているのでロードパスを指定しなくてもよい。 |
;; user setting (setq user-full-name "Toru Takahashi") (setq user-mail-address "torutk@alles.or.jp") |
JDEで新規にクラスファイルを作成するとき、@authorの後ろに挿入される文字列。 |
;; Compilation buffer size (setq compilation-window-height 8) |
JDEからコンパイルしたときに作業用のバッファがウィンドウを分割して表示されますが、その大きさを制限する。左記では8行分のサイズ。 |
MeadowからCygwinのbashを通してjavaの各コマンドを起動するためには、環境変数を設定する必要があります。
| 環境変数 | 設定例 | 内容 |
| PATH | PATH=E:\win32app\cygwin\bin;E:\java\jdk1.2.2\bin;%PATH% | Cygwin(bash)およびJDKの実行ファイルを環境変数PATHに加えておきます。 |
上記設定が完了したら、いったんMeadowを終了し、再度Meadowを起動します。.emacsファイルは起動時に読み込まれます。Meadow起動後、適当なjavaソースファイルを読み込みます。すると、下記のようなハイライトされた表示が出てくると思います。
2001.1.7: JDE2.2.6の画面に変更。
JDEでは、クラスパスやコンパイラ(javac)のパス、各種オプションなどのJava環境の設定を行うことができます。設定には、customというEmacs
Lispパッケージを利用しているので、Emacs上で設定を記述、変更することができます。従来のように.emacsに書く必要がないので、開発するプログラム単位に設定を使い分けることもできます。設定は、下記画面のようにJDEメニューからProject→Optionsを選択すると、General,
Compile, Run, Debug, Autocodeと5種類の設定メニューが表示されます。設定内容を保存するには、JDEメニューのProject→Project
Fileを選択します。
2001.1.7: JDE2.2.6の画面に変更。

とりあえず最低限必要な設定として、Javaコンパイラへのパス、実行するJavaVMへのパス、クラスパスを記述することにします。これらは、上記メニューの中のProjectに含まれるので、メニューのProjectを選択します。
青字で表示されている項(例えばJde Db Debugger:)が設定項目です。今回設定する最低限の項目は次の通りです。
| 設定項目名 | デフォルト値 | 目的 | 設定する値(例) |
|---|---|---|---|
| Jde Run Java Vm W | javaw | 実行時のJavaVMコマンドのパス | e:/java/jdk1.2.2/bin/javaw |
| Jde Global Classpath | なし | コンパイル/実行時のCLASSPATH設定 | e:/java/JSDK2.0/lib/jsdk.jar e:/home/toru/javaw . |
| Jde Compiler | javac | コンパイルコマンドのパス | e:/java/jdk1.2.2/bin/javac [*1] |
[*1] Cygwin1.1のbashをEmacsのシェルに指定しているときに、Jde
Compilerの設定に、例のようにe:とドライブレターを入れており、かつJde
Global Classpathに2つ以上の値が設定されている場合、C-c
C-v C-cでコンパイル実行するとエラーが発生します。bashに渡している文字列は、e:/java/jdk1.2.2/bin/javac
-cp "e:java/JSDK2.0/lib/jsdk.jar;e:/home/toru/javaw;."
Hoge.java のようになっているが、bash側が""内にある';'を単なる文字ではなくシェルの';'として認識してしまうからのようです。Jde
Run Java VM Wの方はドライブレターがあってもOKなのに・・・
回避策としては、Jde Compilerのドライブレターを外し、/java/...
のように指定します。このとき、Cygwin側の設定であらかじめ/java
を実際にjavaのあるディレクトリにmountしておきます。(例:
mount -b E:/java /java)
Projectのカスタマイズ画面をスクロールさせていくと、Jde Run Java VM Wの設定項目があります。デフォルトでは直接javawが指定されていますが、これではjavawが格納されているディレクトリへ環境変数PATHが設定されていないとJavaプログラムが起動できません。
なお、Jde Run Java VMという設定項目もあり、デフォルトではjavaと書かれていますが、これは非Windowsプラットフォームの場合に設定します。Windowsで実行する場合は、デフォルト設定のまま残しておきます。ここを変更してしまうと後に痛い目に会いますので御用心。
そこで、下記のように設定内容を変更します。変更方法は灰色マークされている部署に直接文字を打ち込みます。
例えば実行時のJavaVMコマンドのパス(javaw)を設定します。JDK1.2.2をE:\java\jdk1.2.2にインストールしている場合、下記のような設定になります。
同様に、コンパイルコマンドのパス(javac)を設定します。JDK1.2.2をE:\java\jdk1.2.2にインストールしている場合、下記のような設定になります。[*1]
クラスパスについて設定します。先ほどの2つの設定項目と違い、デフォルトでは設定内容を記述する灰色マークされた領域がありません。
この場合、設定項目Jde Global Classpath:の横に[Show]というマークがありますので、これを右クリックします。すると、次の画面になります。
CLASSPATHは複数設定可能なので、図のように[INS]というマークが表示され、灰色のマークはついていません。ここで、[INS]を右クリックすると次のようになります。
ここでは、JSDK2.0のjarファイルへのパスとカレントパスの2つを設定することにします。
設定が終わったら、画面最初の部分へ戻り、[Set for Current Session]を右クリックする。次に、Javaソースファイルが開かれているBufferを表示させ、JDEメニュー→Project→Project File→Saveを選択する。するとミニバッファ上でプロジェクト名を聞いてくるので、デフォルトのまま(何も指定せずに)Enterを押す。すると、prj.elというファイル名でプロジェクト設定内容が保存されます。
JDEモードでは、JavaファイルをBufferに読み込むとき、そのファイルが存在するディレクトリにプロジェクトファイル(prj.el)があるかどうか調べ、あればこれを読み込みます。なければ、一つ親ディレクトリを調べ、同様にプロジェクトファイルがあればこれを読み込みます。同様にどんどん親ディレクトリを探しにいきます。そこで、いくつかのディレクトリにあるJavaソースファイル間で共通に使用するプロジェクトファイルは、それらの共通親ディレクトリに置くといいでしょう。
JDEのバージョンを上げた場合、prj.elの設定内容が変わることがあります。古いバージョンで作成されたprj.elはそのまま使わずに、再度設定して作り直しましょう。
コンパイルを行うJavaソースファイルをBufferに開き、C-c C-v C-cを押します(または、JDEメニューのCompileを選択)。すると、javacが起動しファイルをコンパイルします。コンパイル実行ログやエラーメッセージは次のように、新しいBufferが開いてそこへ表示されます。
この場合、コンパイル結果2つのエラーが発生していることが下のBufferに表示されています。エラー発生行を表示させるには、C-x
` (逆アポストロフィ:Shift+@)を指定するか、下のBufferのエラーメッセージ行をマウスで右クリックするかします。C-x
`の場合はエラーメッセージの上から順々に表示していきます。
上記の例では、public class を public interfaceへ修正します。修正後ファイルを保存し(C-x
C-s)、再度コンパイルします。コンパイルに成功すると下記のようなメッセージが出ます。

このコンパイルでは、コンパイル対象のソースコードが参照するクラスファイルがJde Global Classpathに設定したパスになければなりません。パッケージを付与した場合、パッケージに対応するディレクトリのトップディレクトリへのパスをJde Global Classpathに追加しておきます。例えば、package hoge.piyo; としており、このファイルをe:/home/toru/javaw/hoge/piyo/ディレクトリに配置する場合は、e:/home/toru/javawを追加します。
複数のJavaソースファイルを依存関係をたどって順次コンパイルするには、ビルド機能を使います。JDEではビルドの実現方法としてjavacを使う方法と外部makeツールを使う方法と2つを使い分けることができます。
Java 2 SDK, Ver.1.3に装備のjavacでは、-Xdependオプションがないので、JDE2.1.8ではうまく動かないようです。jde.elで定義されているjde-java-build関数において、下記のようにjde-compile-option-dependが強制的に真にセットされているため、必ずjavacのオプションにjde-compile-option-depend-switchの値が指定されてしまいます。jde-compile-option-depend-switchの値はトグルで選択する設定方法のため、残念ながら回避方法がありません。
(setq jde-compile-option-depend t)
(jde-compile)
(setq jde-compile-option-depend save-depend)))
|
Apache Jakartaプロジェクトで開発・公開されているJava用makeツールがAntです。Ant自体の使い方については、Ant - an excellent java building toolのページに記述しました。ここでは、AntをJDEEから実行する設定方法を述べます。
JDEE2.2.8からは、jde-ant.elが標準で添付されています。
(require 'jde-ant)
; Ant編集時に、タグ内の属性を記述するときの"が&;qtにならないようにする
(add-hook 'sgml-mode-hook
(lambda ()
(when (string-match "\\.xml$" (buffer-name))
(local-unset-key "\""))))
|
JDEメーリングリストから
注)JDEE2.2.8からはjde-ant.elが標準搭載されましたので、下記作業は不要です。
JDEメーリングリストに公開されたjde-ant.elを利用します。jde-ant.elをMeadowのロードパス下に配置します。