[Meadowで開発へ戻る]

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にインストールした場合を想定しています。

入手パッケージ一覧(2001.8.26更新)
パッケージ名 必須バージョン ファイル名
JDEE 2.2.8 jde-latest.tar.gz
custom 1.9962以降 custom-1.9962.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を展開したディレクトリ
custom-1.9962 customを展開したディレクトリ
eieio-0.17beta2 eieioを展開したディレクトリ
speedbar-0.14beta1 speedbarを展開したディレクトリ
w3-4.0pre.46 w3を展開したディレクトリ
semantic-1.4beta9 semanticを展開したディレクトリ
elib-1.0 elibを展開したディレクトリ

JDEE 2.2.8

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上で実行します。

<JDE展開ディレクトリ>/lisp/makefile編集個所
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

上記の赤個所を、ファイル配置先ディレクトリ名にあわせて修正します。

makefile修正例
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 内容 変更者

custom 1.9962

訂正:下記の記述は間違っていました。下記URLから入手できるcustom-1.9962は、Meadowに標準搭載されているcustomパッケージより古く、Meadowには対応していません。Emacs標準搭載のcustomでOkです。

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上で実行します。

eieio 0.17beta2

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 0.14beta1

この新しいspeedbarを利用してブラウズを大きく改善しています。

http://cedet.sourceforge.net/speedbar.shtml

インストールは、tarでアーカイブを解凍すればOk.バイトコンパイルをするなら
speedbar-0.14beta1$ make EMACS=d:/win32app/Meadow/1.15/bin/MeadowNT.exe
をbash上で実行します。

w3 4.0 pre46

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 

w3の暫定インストール方法

インストールは、作業用の空きディレクトリにおいて、tarでアーカイブを解凍する。次に、build.batを次のように修正する。
set FALLBACKEMACSDIR=d:\win32app\Meadow\1.15
set EMACS=%EMACSDIR%\bin\MeadowNT.exe
そして、build.batを実行する。

あとはsite-lispにコピーする。(正しくはないので、下記URLを参照ください)

w3の正しいインストール方法

Meadowにw3をインストールする方法がUENO TetsuyukiさんのWebページで解説されています。
http://uenox.hoops.livedoor.com/meadow/emacsw3.html

  1. 作業用ディレクトリでtarでアーカイブを解凍する。
    $ tar xvfz w3-4_0pre_46.tar.gz
  2. build.batを上述w3の暫定インストール方法と同じ様に修正する
  3. mule-sysdp.elのパッチを当てる。
    $ cd /tmp/w3-4.0pre.46/lisp
    $ patch -p1 < mule-sysdp.el.patch
  4. build.batの実行
    $ cd /tmp/w3-4.0pre.46
    $ ./build.bat
  5. ファイルをコピー(site-lisp/w3)
    etc/default.css → site-lisp/w3/etc/
    lisp/*el* → site-lisp/w3/
    texi/w3*.info* → 1.15/info/
  6. 1.13b1/info/dirを編集する。w3を追加。
  7. w3をJDE以外で使用するときは、.emacsにw3の設定を記述します。
    (require 'w3-auto)
    (setq w3-default-homepage "URL")

semantic bovinator 1.4beta9

JDEがJavaソースを解析するのに使っている。

http://cedet.sourceforge.net/semantic.shtml

インストールは、tarでアーカイブを解凍すればOk.バイトコンパイルをするならば、
semantic-1.4beta9$ make EMACS=d:/win32app/Meadow/1.15/bin/MeadowNT.exe
をbash上で実行します。

elib 1.0 (since JDE 2.2.3)

JDEがJavaソースを解析するのに使っています。(JDE-2.2.3から必要になりました)

http://sunsite.auc.dk/jde/

インストールは、tarでアーカイブを解凍すればOK(か?)

[目次へ戻る]


設定

設定方法については、下記Webサイトが詳しいです。

設定ファイル(.emacs)への記述

.emacsへの追加記述
;; 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の画面に変更。

Meadow JDEmode Screenshot

プロジェクト設定

 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つを使い分けることができます。

javacを使ったビルド

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の値はトグルで選択する設定方法のため、残念ながら回避方法がありません。

jde.elの抜粋
          (setq jde-compile-option-depend t)
          (jde-compile)
          (setq jde-compile-option-depend save-depend)))

makeを使ったビルド

antを使ったビルド

Apache Jakartaプロジェクトで開発・公開されているJava用makeツールがAntです。Ant自体の使い方については、Ant - an excellent java building toolのページに記述しました。ここでは、AntをJDEEから実行する設定方法を述べます。

JDEE2.2.8からは、jde-ant.elが標準で添付されています。

.emacsに追加
(require 'jde-ant)
; Ant編集時に、タグ内の属性を記述するときの"が&;qtにならないようにする
(add-hook 'sgml-mode-hook
          (lambda ()
            (when (string-match "\\.xml$" (buffer-name))
              (local-unset-key "\""))))
makeの呼び出しコマンド、オプションをAntに変更する

JDEメーリングリストから

jdeに組み込むjde-ant.elを利用する

注)JDEE2.2.8からはjde-ant.elが標準搭載されましたので、下記作業は不要です。

JDEメーリングリストに公開されたjde-ant.elを利用します。jde-ant.elをMeadowのロードパス下に配置します。

[目次へ戻る]