hits since 2002.12.8

Powered by SmartDoc

JDEE:Java Development Environment for Emacs

TAKAHASHI, Toru
torutk@02.246.ne.jp
http://www.02.246.ne.jp/~torutk/jdee/jdee.html
JDEEは、Emacs用の強力なJava開発パッケージです。コーディング支援機能、ビルド用のプロジェクト管理機能、デバッガなど豊富な機能を持っています。昨今の統合開発環境との違いは、ユーザインタフェースがキャラクタ指向(CUI)な点だけといってもいいでしょう(GUI指向よりCUI指向の方を好む人も多いです)。Emacsの強力過ぎる編集機能に慣れてしまうと、統合開発環境のおまけ的なエディタの貧弱な編集機能ではストレスを感じてしまいます。

目次

はじめに

この文書は作成途上です。Meadowで開発ページのJDEEの項もご覧下さい。

2004.12.22現在、JDEE2.3.5向けに修正途中。

はじめ方

JDEEはEmacsを拡張するパッケージですので、まずはEmacsが動作することが前提となります。JDEEが動作するEmacsのバージョンは20以上ですが、JDEEの開発はEmacs 21をベースとしているので、なるべく最新版のEmacs 21を使用した方がよいでしょう。

入手

Emacsの入手

もしEmacsが無ければ、Emacsを導入します。ここではEmacsのインストール方法は紹介しません。最近のUNIX環境では、ほぼEmacsが標準搭載されています。

Meadow

Windows用のEmacsです。インストール・設定については以下のサイトをご覧下さい。

Emacs Lispパッケージの入手

以下のEmacs Lispパッケージを入手します。Emacsの種類によっては既にパッケージがインストール済みであるかもしれません。また、既にインストール済みであってもバージョンが古いかもしれません。

入手するEmacs Lispパッケージ
パッケージ種類 ファイル名 バージョン 入手先 備考
JDEE jde-latest.tar.gzまたはjde-latest.zip 2.3.5.1 http://jdee.sunsite.dk/ 安定版
CEDET cedet-1.0pre3.tar.gz 1.0pre3 http://cedet.sourceforge.net/ eieio-1.0pre3 speedbar-1.0pre3 semantic-2.0pre3
elib elib-1.0.tar.gzまたはelib-1.0.zip 1.0 JDEEのサイトからダウンロード可 1.0を要求

Meadow 1.15

Meadow 1.15では、speedbar-0.8.1/elib-1.0が標準添付されています。speedbarの方はバージョンが古いので、JDEEが必要とする0.14beta2以上を入れる必要があります。

Meadow 1.15 Netinstall版

Meadow 1.15 Netinstall版には、JDEE-2.3.2、elib-1.0、eieio-0.17、speedbar-0.14beta4、semantic-1.4.2(+Emacs20.x用パッチ)が用意されています。インストール時に、これらのパッケージをチェックして下さい。(最新には更新されていないかも)

Meadow2.00/2.1

Meadow 2.00では、speedbar-0.11aが標準添付されています。このspeedbarはバージョンが古いので、JDEEが必要とする0.14以上を入れる必要があります。その他のElispパッケージもMeadow 2.00には含まれていないので、入手するEmacs Lispパッケージ表に挙げられているものを揃える必要があります。

Meadow2.00 Netinstall版

Meadow 2.00 Netinstall版は2003年6月27日現在、JDEEが必要とするEmacs Lispパッケージは用意されていません。自力でインストールする必要があります。

Meadow3.00

Meadow 3.00では、speedbar-1.0が標準添付されています。このspeedbarはcedet-1.0pre3に含まれるspeedbar-1.0pre3より新しいので、cedet-1.0pre3に含まれるspeedbarを無効にするとよいでしょう(.nosearchファイルをspeedbarディレクトリに作成する)。

XEmacs 21.4.8

XEmacs 21.4.8では、JDEE-2.2.8/eieio-0.16/speedbar-0.13/semantic-1.4beta8/elibが標準添付されています。JDEE-2.2.9以降を入れるには、elib以外は一通り最新のものを入れる必要があります。

インストール

依存関係がありますので、以下の順番にインストールしていきます。Emacs Lispパッケージは大抵Emacs系ならば、site-lispディレクトリの下に入れます。XEmacs系はあまりよく知らないのですが、site-packagesディレクトリの下に入れることになるかと思います。

  1. cedet
  2. elib
  3. jdee

以下のコマンドラインの例は、Windows上においてCygwin環境で実行したもので、EmacsとしてはMeadow1.15を使用しています。bashシェル上でGNU makeを使用しているので、Linux等でもほとんど同じ操作です。

cedetによるspeedbar、eieio、semanticまとめてインストール

tar+gz形式のアーカイブを解凍して、site-lispディレクトリ下に展開します。これだけでもOKですが、バイトコンパイルしたいならば、

cedetのインストール(Windows+bash)
torutk$ cd /win32app/Meadow/site-lisp
site-lisp$ tar xzf /tmp/cedet-1.0beta3b.tar.gz
site-lisp$ cd cedet-1.0beta3b
cedet-1.0beta3b$ make EMACS=/win32app/Meadow/bin/Meadow.exe
  :
cedet-1.0beta3b$
CEDET-1.0pre2とJDEE2.3.5

JDEEの依存パッケージ(CEDET)バージョン検査ロジックが1.0preに対応していせん。この組み合わせを使用するには、jde.elのjde-check-version関数を書き換えます。

diff -u jde.el.orig jde.el
--- jde.el.orig 2004-12-17 13:29:35.000000000 +0900
+++ jde.el      2005-05-22 02:23:06.187500000 +0900
@@ -987,14 +987,7 @@

 (defun jde-check-version (current-version min-version max-version)
   "Return non-nil if CURRENT-VERSION >= MIN-VERSION or <= MAX-VERSION."
-  (and (or (jde-earlier-versionp current-version
-                                 max-version)
-           (string= current-version
-                    max-version))
-       (or (jde-earlier-versionp min-version
-                                 current-version)
-           (string= current-version
-                    min-version))))
+  (not (inversion-test 'cedet min-version)))

 (defun jde-earlier-versionp (ver1 ver2)
   "Return non-nil if VER1 is earlier than VER2"

elibのインストール

安直なelibのインストール

tar+gz形式のアーカイブを解凍して、site-lispディレクトリ下に展開します。これだけでOKですが、もしバイトコンパイルしたいなら、GNU makeコマンドを入手してmakeを実行します。

elibのインストール(Windows+bash)
torutk$ cd /win32app/Meadow/site-lisp
site-lisp$ tar xzf /tmp/elib-1.0.tar.gz
site-lisp$ cd elib-1.0
elib-1.0$ make EMACS=/win32app/Meadow/bin/Meadow.exe
  :
elib-1.0$

正式なelibのインストール

GNU makeコマンドを使って必要なファイルをインストールします。まずtar+gz形式のアーカイブを作業用ディレクトリに解凍して展開します。次に、Makefileを編集します。

elibのMakefile修正箇所(1)
prefix = d:/win32app/Meadow
datadir = $(prefix)
locallisppath = $(datadir)/site-lisp
  :
ELIBDIR = $(locallisppath)/elib
infodir = $(prefix)/info

EMACS = d:/win32app/Meadow/bin/Meadow.exe

info関係のインストール時にエラーが発生するので、該当箇所を修正します。

elibのMakefile修正箇所(2)
install-info: elib.info
    $(INSTALL_DATA) elib.info* $(infodir)
    if $(SHELL) -c 'install-info --version' \
        >/dev/null 2>&1; then \
	install-info --info-dir=$(infodir) elib.info; \
    else true; fi

修正後、make installを実行します。

elibのインストール(Cygwin)
torutk$ cd work/elib-1.0
elib-1.0$ make install
  :

続いてinfoファイルのインストールを行います。Makefileには無いので、手でコピーします。

elibのinfoファイルのコピー
elib-1.0$ cp elib.info* d:/win32app/Meadow/info
elib-1.0$ 

/win32app/Meadow/info/dirファイルに今コピーしたelibの設定を追記します。

* Elib: (elib.info).   The Emacs Lisp Library.

jdeeのインストール

jdee-2.3.5のインストール

tar+gz形式のアーカイブを解凍して、site-lispディレクトリ下に展開します。これだけでOKですが、もしバイトコンパイルしたいなら、GNU makeコマンドを入手してmakeを実行します。

jdeeのインストール(Windows+bash)
torutk$ cd /win32app/Meadow/site-lisp
site-lisp$ tar xzf /tmp/jde-atest.tar.gz
site-lisp$ cd jdee-2.3.5/lisp
lisp$ make EMACS=/win32app/Meadow/bin/Meadow.exe \
    CEDET=../../cedet-1.0beta3b ELIB=../../elib-1.0
  :
lisp$

設定

JDEEは、EmacsのメジャーモードであるJDEモードとして動作します。Emacs起動時にJDEEパッケージを読み込んでおくか、必要な時に手動でJDEEパッケージを読み込んでおくか2つの方法があります。JDEEはそれなりに重いので、Java開発環境を頻繁に使うなら前者で、たまにしか使わないなら後者で使用するとよいかと思います。

  1. Emacs起動時にJDEEパッケージを初期化
    .emacsに記述
    (require 'jde)
    
  2. 後でJDEEパッケージを起動するためのトリガを設定

    .emacsに記述
    (autoload 'jde-mode "jde" "Java Development Environment for Emacs." t)
    (setq auto-mode-alist (cons '("\.java$" . jde-mode) auto-mode-alist))
    

    拡張子が.javaのファイルをEmacsのバッファに開いた最初の時にJDEEパッケージを起動します。あるいは、M-x jde-modeでも起動できます。

cedetパッケージ使用時の設定

CEDETを使用している場合、.emacsに以下の記述を行います。

.emacsに記述
(setq semantic-load-turn-useful-things-on t)
(load "cedet")

オプション設定

JDEEパッケージそのものの設定ではありませんが、JDEモードを使用するときに設定しておくと便利な項目を紹介します。

インストールにおける問題点

Emacs 20.x(Meadow1.15等)にSemantic 1.4

Meadow1.15(Emacs 20.7)にSemanticパッケージを入れた時に以下の問題が発生しました。

  1. Meadow起動時にInvalid face property.underlineが発生

    semantic 1.4に含まれるsemantic-util-modes.elの中にある以下の記述が原因となっています。

    (:underline "red")

    これを以下のように修正します(二箇所あり)。

    (:background "red" :underline t)

    パッチファイルをここに置いています。

Emacs 20.xでは、"red"がnilのように扱われるそうですが、Meadow 1.1xの場合は厳密に評価されてエラーとなってしまうそうです。nilのように扱われる場合、色もアンダーラインも付かないかもしれません。

Meadow2.00b1にspeedbar 0.14beta4

Meadow 2.00b1にspeedbarパッケージを入れた時に以下の問題が発生しました。

  1. speedbar起動し、ツリーからファイルを選択するとSymbol's function definition is void: w32-focus-frameが発生

    Meadow2.00b1で、w32-focus-frameが定義されていないのが原因です。.emacs等で以下のように関数を定義しておき回避します。

    (fset 'w32-focus-frame 'x-focus-frame)
    

Meadow3.00(Emacs22.0)にsemantic 2.0pre3

Meadow 3.00(Emacs 22.0)にsemanticパッケージを入れた時に以下の問題が発生します。

  1. semantic-idle.elに、CPUを100%占有するバグ

    cedetのcvs公開サイトから最新版のsemantic-idle.el(Ver.1.35)を入手し差し替えて回避します。 ViewVCでのsemantic.elページ

[Thanks to tobetchiさん]

Meadow3.00(Emacs22.0)にJDEE-2.3.5.1

Meadow 3.00(Emacs 22.0)にJDEEパッケージを入れた時に以下の問題が発生します。(解決策調査中)

  1. JDEEの操作に割り当てられたはずのキーバインドが未定義

    例えばコンパイル操作に割り当てられたC-c C-v C-cを実行しようと、C-c C-vまで操作した時点で、C-c C-v is undefined とエラーが発生します。

こんにちは、JDEE

JDEEモードの最初の操作として、簡単な単一のJavaソースファイルからなる小さなプロジェクトを作成し、コンパイル、実行およびデバッグをしてみます。作業の流れは以下のとおりです。

  1. ソースファイルの記述(1)〜テンプレートから生成〜
  2. ソースファイルの記述(2)〜コーディング〜
  3. コンパイル
  4. エラーの修正
  5. 実行
  6. デバッグ

テンプレートからコードの雛型を生成

まずEmacsを起動します。Emacs起動時にJDEEパッケージが初期化されていなければ、ここでJDEEパッケージを起動します。

[Files]メニューの[JDE New]→[Console...]を選択します。

すると、ミニバッファにカレントディレクトリが表示されるので、作成するJavaソースファイル名をミニバッファに入力します。下記は、workディレクトリの中にHelloJdee.javaというファイルを作成する場合の例です。

次に、ミニバッファにPackage:とプロンプトが出ます。生成するソースファイルに指定したいパッケージ名を入力します。ここではパッケージ名を使用しないので単に[Enter]を押します。

これで、mainメソッドを保持するクラスが生成されます。

こんにちはJDEEのコーディング

テンプレートから生成されたソースコードの雛型に、コードを記述します。今回は、mainメソッドの中に、Hello JDEE World!と表示させる命令を書くことにします。

System.out.printlnの記述

まず、キャレット(カーソル)をmainメソッド宣言行の次の行に持ってきます。そこで、[JDE]メニューの[Code Generation]→[Templates]→[println...]を選択します。このメニュー操作はキーバインドC-c C-v C-lに割り付けられているので、C-c C-v C-lを操作しても同じです。操作直後の画面を以下に示します。

System.out.printlnテンプレート(1)

キャレットのある行に'System.out.println('が挿入され、ミニバッファに'Print out:'のプロンプトが表示されます。ここに、System.out.printlnの引数としてコーディングする内容を記述し[Enter]を押します。

System.out.printlnテンプレート(2)

すると、System.out.printlnの文が完成した形で挿入されます。

System.out.printlnテンプレート(3)

Javadocコメントの記述

mainメソッドにprintlnを記述したら、次にはmainメソッドにコメントを記述します。[JDE]メニューの[Documentation]→[Add]を選択します。このメニュー操作はキーバインドC-c C-v jに割り付けられているので、C-c C-v jを操作しても同じです。操作直後の画面を以下に示します。

Javadocコメントの記述(1)

あとは、コメントの内容を適宜編集します。

こんにちはJDEEのコンパイル

では、コンパイルを行います。JDEE上からコンパイルするためには設定が必要です。コンパイルの設定方法は、JDEEの設定:コンパイル設定を参照して下さい。コンパイル設定には3通りの方法がありますが、ここでは「2.javac」を使用してみましょう。

設定が完了したら、コンパイルを実行します。HelloJdee.javaのバッファの上で、C-c C-v C-cを操作します。すると、画面が分割され、下側に*compilation*という名のバッファが現れます。

コンパイルが成功すれば、一定時間後にバッファが消えます。コンパイルが失敗すれば、*compilation*バッファにエラーメッセージが表示されます。

こんにちはJDEEのエラー修正

コンパイルにエラーがあった場合、*compilation*バッファにエラーメッセージが表示されます。エラーメッセージの最初の箇所にキャレットが移動しています。*compilation*バッファのエラー行が書かれている行にキャレットを移動して[RET]キーを押せばエラー行にジャンプします。また、ソースバッファで、[C-x `]を叩けば、現在表示しているエラー行の次のエラー行ヘジャンプします。

こんにちはJDEEの実行

C-c C-v C-rを操作すると、バッファに表示されているクラスを実行します。

今回は単一のクラスで実行可能であり、かつpackageを使用していないので特に設定を追加することなく実行できました。しかし本格的なプログラムの場合、CLASSPATHやmainを持つクラス名、コマンドラインオプションなどの設定を行っておく必要があるでしょう。

こんにちはJDEEのデバッグ

デバッグには、旧来のJDBを使用するものと、JPDA(Java Platform Debugger Architecture)を使用するものと2つの方法があります。デバッグの設定方法は、JDEEの設定:デバッグ設定を参照して下さい。ここでは、「2.JDEbug」を使用してみましょう。また、合わせてコンパイルオプションにデバッグ情報を付加する設定も行なっておいて下さい。

まず、ブレークポイントを置く行を選択します。JDEbugによるデバッグの場合、デバッグ実行を開始するとブレークポイントまで実行します。

すると、ブレークポイントが置かれた行が反転する状態になります。

[JDE]メニューから、[Debug App(C-c C-v C-d)]を選択します。

デバッグ実行中は、ローカル変数の状況を表示するウィンドウが新たに表示されます。

JDEEの操作

コンパイル操作

コンパイル系の操作
操作内容 コマンド メニュー
現在開いているバッファをコンパイル C-c C-v C-c [JDE]→[Compile]
現在開いているバッファのプロジェクトをビルド C-c C-v C-b [JDE]→[Build]

JDEEでは、編集中のバッファをコンパイルするか、makeやantを実行してプロジェクトをビルドすることができます。キーバインドは上述の表のとおりで、それぞれ設定は次の章で述べています。

BeanShell

JDEEには、Javaをインタプリタ的に利用できるBeanShell環境が付いています。このインタプリタ環境は、プログラム開発中にAPIの挙動を実験して確認するのにうってつけなのです。

BeanSHellの起動
操作内容 コマンド メニュー
BeanShell操作用バッファの起動 C-c C-v C- [JDE]→[Interpreter]→[Start]

ソースのブラウズ

JDEEでは、ソースコードをブラウズするための支援機能として、次のものが提供されています。

  1. クラス・インデックス・メニュー
  2. speedbar
  3. etags

また、JDEEとは別パッケージになりますが、統合環境風のソースコードブラウザECBを組合せることもできます。Meadow and JDEページのECBに簡単な紹介を(ちょっと古いバージョンのものですが)記述しています。

クラス・インデックス・メニュー

[Classes]メニューを選択すると、関連するクラスのフィールド、メソッドがカスケードメニュー形式で一覧でき、選択するとソースの該当箇所がバッファに開かれます。関連するクラスの範囲は、メニュー選択時のファイルと同一ディレクトリのようです。

speedbar

M-x speedbar RETとすると、speedbarウィンドウが表示されます。ドリルダウンのツリービュー形式で、ソースファイル、フィールド、メソッドが一覧できます。選択すれば、該当箇所がバッファに開かれます。

etags

emacsではおなじみの機能の拡張です。

JDEEの設定

JDEEでは、クラスパスやコンパイル方法指定、各種オプションなどの開発環境の設定を行うことができます。設定には、customというEmacs Lispパッケージを利用しているので、Emacs上で設定を記述、変更することができます。設定内容はプロジェクトファイルに記述されますが、従来のように.emacsに書くことも出来ます。開発するプログラム単位に設定を使い分けたい場合はプロジェクトファイルに、ユーザで共通の設定なら.emacsに設定を記述するようにしたらよいでしょう。

customによるJDEEの設定には、メニューから到る方法と、ミニバッファ上で設定を直接指定する方法があります。

メニューから到る場合は、下記画面のようにJDEメニューから[Project]→[Options]を選択すると、General, Compile, Run, Debug, Autocode, Javadoc, Make, Ant, Complete, Wizと10種類の設定グループが表示されます。設定内容を保存するには、JDEメニューの[Project]→[Project File]→[Save]を選択します。

JDEメニューから[Project]→[Options]→[General]を選んだ場合、今までJavaのソースが表示されていたバッファの上に、Emacsのcustomizeパッケージを利用したJDEE設定(Jde Project設定グループ)画面のバッファが表示されます。

何らかの設定を変更したら、上の画面の中にある、[Set for Current Session]かまたは[Save for Future Sessions]をクリックします。これを行わないと変更が反映されません。

Set for Current Session
現在編集中のJavaソースファイルには変更が有効になります。ただし、設定は保存されていないので、次にEmacsを起動しても変更は反映されません。プロジェクトに設定を保存するには、一旦この[Set for Current Session]をクリックして編集中のJavaソースバッファに戻ってから、JDEメニューの[Porject]→[Project File]→[Save](またはC-c C-v C-p)でプロジェクトの保存を実行します。
Save for Future Sessions
設定はユーザの.emacsファイル($HOME/.emacs)に保存されます。

ミニバッファから設定機能を実行することもできます。メニューから逐次辿っていくのは慣れてくると面倒なものです。ミニバッファから設定したい箇所を直接起動することができます。例えば"Jde Project設定グループ"を直接指定する場合は、M-x customize-group RET jde RETとします。同様に、"Jde Compiler設定"を直接指定する場合は、M-x customize-variable RET jde-compiler RETとします。

custom設定のファンクション
ファンクション名 内容
customize-variable 変数名を直接指定して変更画面を表示する
customize-group グループ名を指定して変更画面を表示する

コンパイル設定

JDEEでは、以下の3種類のコンパイル方法が提供されています。コンパイルは、現在バッファに開いているソースファイルをコンパイルします。また、MakefileやAnt等を使ったビルドが別に提供されています。

  1. javac server(デフォルト)
  2. javac
  3. jikes

javac serverは、JDEE2.2.9から導入された方法です。SunのJ2SE SDKに含まれているjavacコマンドを外部コマンドとして実行すると、1つのソースファイル毎にjavacプロセスが起動されるので遅いとう問題があります。javacコマンド自身もjavaで書かれたプログラムなので、コマンドを実行するたびにJavaVMが起動するためです。そこで、コンパイル・サーバ用プロセスを最初に起動しておき、コンパイル時は既に稼働しているサーバへ要求を出すことによって実現するという方法が導入されました。

javacは、従来どおりのjavacコマンドによるコンパイルです。

jikesは、IBMで開発されている高速なjavaコンパイラjikesを使ったコンパイルです。

コンパイル方法の指定
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Compiler
Compler type javac server/javac/jikesの三択
Path javac/jikesの実行ファイルのパスを指定する

JDEEから呼び出すコンパイラを設定するには、JDEメニューから[Project]→[Options]→[General]を選んでカスタマイズバッファを表示させ、Jde Compilerを探します。探すにあたって、Emacsではマウスやカーソルで目的行が現れるまでちまちまスクロールさせる操作は労力が大きいため滅多に使用しません。よく使用する方法は、インクリメンタルサーチを使って目的の場所へ移動させるものです。C-sを押すとミニバッファに'I-search:'とプロンプトが表示されるので、[j],[d],[e],[ ],[c]とキーを押していくと、設定項目'Jde Compiler'の個所へスクロールします。

Jde Compilerの設定を行うため、[Show]をクリックします

ここで、3種類のどれかを選択します。デフォルトでは、javac serverが選択されています。

メニューから手繰るのが面倒なら、ミニバッファからM-x customize-variable RET jde-compiler RETとすれば一発です。

javac server

javac serverを選択した場合、server起動のためのJavaVMおよびコンパイルのためのクラスファイル(JDKに付属のtools.jar)を設定する必要があります。設定は以下のカスタマイズ変数に記述します。

  1. Jde Jdk Registry
  2. Jde Jdk

なお、デフォルトでは環境変数JAVA_HOMEに設定された値を参照します。個々のプロジェクトでJDKのバージョンを切り替える必要がなければ、ユーザの環境変数JAVA_HOMEに指定しておいてもよいでしょう。

javac serverの詳細設定(Jde Jdk Registry)
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Jdk Registry
Version JDKのバージョンを指定する。例:1.4.1
Path JDKのディレクトリを指定する。例:/java/j2sdk1.4.1

この項目は、複数のJDKを設定しておくことができます。

javac serverの詳細設定(Jde Jdk)
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Jdk
Jde Jdk Registryで設定したVersionの1つを選択する。例:1.4.1

この項目を設定する前に、先にJde Jdk Registryを記述しておきます。Jde Jdk Registryを設定し、[Set for Current Session]等で反映すると、Jde Jdkの値はJde Jdk Registryで設定したJDKをラジオボタンで選択できるようになります。

コンパイルのメッセージが化ける

javac serverを使用してコンパイルした場合、エラーメッセージが化ける(エスケープされた表示)状態となります。これは、javac serverが裏で使用しているBeanShellが日本語対応していないため、日本語ロケールでjavacを実行したときに表示される日本語メッセージが化けてしまうからです。

回避方法として、BeanShell起動時にJava VMを英語ロケールで起動するオプションを付加します。

BeanShellを英語ロケールに設定
カスタマイズ項目 内容
グループ Bsh
変数名 Bsh Vm Args
-Duser.language=en

この設定を、プロジェクト毎に個別に毎回設定するのはかなり面倒なことです。その場合は、.emacsに最初に指定してしまうこともできます。方法は簡単で、customizeで設定後、customizeバッファの最初の方にある[Save for Future Sessions]を指定(クリック)します。すると、JDEEのプロジェクトファイルではなく、ユーザの.emacsファイルに設定が追記されます。

.emacsの末尾に、custom-set-variablesという関数の中に、今設定したbsh-vm-argsの設定が書かれています。この画面では他に、jde-jdk-registryも.emacs中に設定しています。このようにプロジェクトが違っても共通で使用したいものがあれば、customizeバッファから[Save for Future Sessions]で.emacsに設定を反映させることができます。

javac

コンパイルの指定でjavacを選んだ場合、javacコマンドへのパスを追加記述します。

コンパイル後エラーがあってもコンパイルバッファが消える

JDEE2.3.0ではjavacでコンパイルする際、エラーが発生していても、コンパイル終了後一定時間たつとバッファが消えてしまいます。javacで実行したプロセスの成否を上手く判断できていないようです。消えるといってもバッファを切り替えれば見えるので、大きな問題ではないですが。。。回避策としては、コンパイル成功時にコンパイルバッファを消す設定を無効にします。

コンパイル終了後バッファを消さないように設定
カスタマイズ項目 内容
グループ Jde
変数名 Jde Compile Finish Hook
jde-compile-finish-kill-bufferを削除する

jikes

ソースパスの設定

コンパイル時のソースパス設定は以下のカスタマイズ変数に設定します。

コンパイル時のsourcepath設定
カスタマイズ項目 内容
グループ Jde Compile Options
変数名 Jde Compile Option Sourcepath
コンパイル対象ソースファイルの基点ディレクトリを設定する(例:~/javaw/projectOne/src)

注意)このカスタマイズ項目と似た名前を持つJde ProjectグループのJde Sourcepath変数があるので間違わないように注意。

ビルド設定

JDEEでは、以下の2種類のビルド方法が提供されています。デフォルトではmakeが有効となっています。

  1. make
  2. ant

ビルド方法は以下のカスタマイズ変数で指定します。

ビルド方法の切り替え
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Build Function
Function jde-make/jde-ant-build/ユーザ定義の三択

jde-makeが選ばれているときは、ビルド操作(C-c C-v C-b)でmakeが実行されます。Antを実行したいときは、jde-ant-buildを選択します。

make

makeのコマンド名を以下のカスタマイズ変数で設定します。デフォルトは'make'です。

make時のmakeコマンド名設定
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Make Program
makeコマンド名を設定する(例:gmake)

makeは、makefileのあるディレクトリで実行することが大半です。そこで、以下のカスタマイズ変数で指定します。

make時の実行ディレクトリ設定
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Make Working Directory
make実行ディレクトリを設定する(例:~/javaw/projectOne/src)

makeコマンドに引数を渡したいときは、以下のカスタマイズ変数に設定します。

makeコマンドへ渡す引数設定
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Make Args
makeコマンドへ渡す引数を設定する(例:-k)

ant

Ant起動方法に関する設定

Antの起動方法は以下の3種類が提供されています。

  1. Script
  2. Java
  3. Ant Server

Scriptは、Antに付属するシェルスクリプトまたはバッチファイルをJDEEから呼び出します。

Javaは、JDEEからjavaコマンドを使ってAntのクラスファイルを直接起動します。

Ant Serverは、コンパイルにおけるjavac serverと同様、Antサーバ用プロセス(bsh)を最初に起動しておき、ビルド時はサーバへ要求を出す方法です。

Ant起動方法の指定
カスタマイズ項目 内容
グループ Jde Ant
変数名 Jde Ant Invocation Method
Script/Java/Ant serverの三択

Script起動に関する設定

起動するAntのスクリプト名を以下のカスタマイズ変数で設定します。デフォルトは'ant'です。

Scriptによるビルド時のスクリプト名設定
カスタマイズ項目 内容
グループ Jde Ant
変数名 Jde Ant Program
antコマンド名を設定する(例:ant.bat)
Ant1.5のantシェルスクリプトはCygwinでエラー

Ant 1.5に付属する'ant'シェルスクリプトは、Cygwin上ではエラーとなります。JDEEからCygwinのbashを通じてScriptでビルドを実行するときは、'ant.bat'を設定するとよいでしょう。

Antのスクリプトを実行するには、JAVA_HOME環境変数を設定しておくことが必要です。JAVA_HOMEは、Emacs起動前に環境変数に設定しておく必要があります。

Java起動に関する設定

javaコマンドからAntを起動します。Windows/Cygwinでは、エラーとなってしまいます。原因は不明。

Ant Server起動に関する設定

Ant Server(bsH)経由でAntを起動します。javac serverによるコンパイルと同じく、Jde Jdk Registryの設定が必要です。

Ant共通設定

システムのANT_HOME環境変数にAntをインストールしたディレクトリが設定されていない場合、以下のカスタマイズ変数で設定しておくことが必要です。

ANT_HOMEの設定
カスタマイズ項目 内容
グループ Jde Ant
変数名 Jde Ant Home
Antをインストールしたディレクトリを設定する(例:d:/java/jakarta-ant-1.5)

ビルドを実行すると、ソースファイルのあるディレクトリにAnt構築ファイル(build.xml)を探し、見つからないとエラーとなってしまいます。しかし、通常Ant構築ファイル(build.xml)はソースファイルのトップディレクトリに置きます。そこで、ソースファイルのあるディレクトリから上に登ってbuild.xmlを探すように設定します。

build.xmlをディレクトリを遡って探す設定
カスタマイズ項目 内容
グループ Jde Ant
変数名 Jde Ant Enable Find
on (non-nil)

ビルドを実行すると、Antがターゲット名指定なしに起動されます。このときはAnt構築ファイル(build.xml)に設定したデフォルトのターゲットが指定されます。開発時はターゲットを自由に指定できると便利ですので、ビルド時にミニバッファでターゲット名を入力できるようにします。以下のカスタマイズ変数で設定します。

Ant実行時ミニバッファからターゲット名を渡す設定
カスタマイズ項目 内容
グループ Jde Ant
変数名 Jde Ant Read Target
on (non-nil)

Ant構築ファイル名は、デフォルトでは'build.xml'ですが、これは自由に変えることができます。以下のカスタマイズ変数でAnt構築ファイル名を設定します。

Ant構築ファイル名の設定
カスタマイズ項目 内容
グループ Jde Ant
変数名 Jde Ant Buildfile
makefile.xml

ドキュメント参照

JDK APIの参照

JDKのAPIドキュメントを参照します。

APIドキュメントを表示

APIドキュメント表示操作
操作内容 コマンド メニュー
JDK APIドキュメントをブラウザ起動して表示 C-c C-v C-n [JDE]→[Help]→[JDK]
カーソル位置のクラスをJDK APIドキュメントから探してブラウザに表示 C-c C-v C-w [JDE]→[Help]→[Symbol at Point]
クラス名を指定してJDK APIドキュメントから探してブラウザに表示 - [JDE]→[Help]→[Class...]

これらの機能を使用する場合、APIドキュメントが置かれているディレクトリをあらかじめ設定しておく必要があります。

JDKドキュメント位置の設定
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Help Docsets
Docset type JDK APIを指定
Docset directory JDK APIを展開したディレクトリ(例 d:/java/j2sdk1.4.1/docs/api)
Doc lookup function nil

実行

JDEE上からJavaプログラムを実行する際のいろいろな設定について紹介します。

コマンドラインオプションの指定

Javaプログラムを起動するときに、コマンドラインオプションを指定することができます。JDEEでは、あらかじめプロジェクト設定においてオプションを記述する方法と、実行する際に(毎回)コマンドラインオプションを入力する方法が提供されています。

プロジェクト設定にコマンドラインオプションを記述する設定
カスタマイズ項目 内容
グループ Jde Run Options
変数名 Jde Run Option Application Args
コマンドラインに渡すオプション
実行時にコマンドラインオプションを入力する設定
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Run Read App Args
on (non-nil)

デバッグ

JDEEでは、以下の2種類のデバッグ方法が提供されています。

  1. JDBコマンドを呼び出す
  2. JPDAを使用したJDEbug

JDBコマンドは、JDK1.1の頃から装備されていたコマンド指向のデバッガです。JDEEから起動すると、ソースコードとは独立したバッファ上で実行されます。

JPDAは、JDK1.3から装備された新しいデバッグ機構です。

デバッグ方法の指定
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Debugger
JDEbug/jdb/old jdbの三択

デフォルトでは、jdbが選択されています。

jdbによるデバッグ

[JDE]メニューの[Debug App](C-c C-v C-d)を選択すると、jdbのコマンドを実行するバッファが表われます。ここに、通常のコンソールからjdbを実行したときと同じようにコマンドを入力をするとデバッガの機能を実行することができます。

JDEbugによるデバッグ

[JDE]メニューの[Debug App](C-c C-v C-d)を選択すると、デバッグプロセスの出力バッファが表われます。また、ローカル変数を表示する別ウィンドウが表われます。JDEbugの場合、ソースコードを表示するバッファ上にブレークポイントや現在実行している行を示す表示があります。

デバッグ情報を付加するコンパイルオプション

デバッガでデバッグする際には、コンパイルオプションに'-g'を追加しておく必要があります(ローカル変数を見るには)。デバッグ情報のコンパイルオプションを指定するには、以下の設定を使用します。

コンパイル時のデバッグオプションの指定
カスタマイズ項目 内容
グループ Jde Compile Options
変数名 Jde Compile Option Debug
all/none/selected の三択、selectedの場合さらに、Line Numbers/Variables/Sourceそれぞれにon/offを選択

デバッグ実行時にプログラムに渡すコマンドラインオプション

デバッグ実行時に渡すコマンドラインプションの指定
カスタマイズ項目 内容
グループ Jde Db Options
変数名 Jde Db Option Application Args
コマンドラインオプションとして渡す文字列を設定する

JDEEによるコーディング支援

雛型の生成

コメントの生成

JavaDoc形式のコメントは、クラス、フィールド、メソッドに対して記述します。その際、カーソルをクラス、フィールド、メソッドの宣言行に置いてから[JDE]→[Documentaion]→[Add]を実行すると、その宣言行に合ったドキュメントコメントが生成されます。例えば、mainメソッドの宣言行で実行すると、

mainメソッドのJavaDocコメント生成
    /**
     * Describe <code>main</code> method here.
     *
     * @param args a <code>String[]</code> value
     */
    public static void main(String[] args) {

のように、引数の名前を@paramに取り込んでくれます。

ファイル先頭に共通のドキュメントを入れる

JDE→Project→Options→Autocodeで開かれるCustomize Aproposバッファ中で、Jde Gen Buffer Boilerplateの項目に記述する。

ファイル先頭ドキュメントの設定
カスタマイズ項目 内容
グループ Jde Gen
変数名 Jde Gen Buffer Boilerplate
実際のコードを記述。
Jde Gen Buffer Boilerplate: [Hide]
[INS] [DEL] Line: /*
[INS] [DEL] Line:  * Torutk jde mastering project.
[INS] [DEL] Line:  * Copyright (C) 2000 by Toru TAKAHASHI, all rights reserved.
[INS] [DEL] Line:  * 
[INS] [DEL] Line:  */
[INS] [DEL] Line: 
[INS]
   [State]: you have edited the value as text, but you have not set the option.
Lines of boilerplate text to put at the head of a buffer template.

略語展開

キーワード展開

登録されている省略語を入力した後にスペースキーを押すと、省略語をキーワードに展開することができます。キーワード展開はデフォルトでは無効になっています。

キーワード展開有効/無効の設定
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Enable Abbrev Mode
on / off

キーワード展開が有効になっていると、EmacsのステータスバーにAbbrevが表示されます(下図参照)。

省略語とキーワードは、カスタマイズで登録することができます。

キーワードの登録
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Mode Abbreviations
Abbreviation 略語
Expansion 展開する文字列

デフォルトでは以下のキーワード補完リストが登録されています。

キーワード補完リスト
略語 補完されるキーワード
ab abstract
bo boolean
br break
by byte
byv byvalue
cas cast
ca catch
ch char
cl class
co const
con continue
de default
dou double
el else
ex extends
fa false
fi final
fin finally
fl float
fo for
fu future
ge generic
go goto
impl implements
impo import
ins instanceof
in int
inte interface
lo long
na native
ne new
nu null
pa package
pri private
pro protected
pu public
re return
sh short
st static
su super
sw switch
sy synchronized
th this
thr throw
throw throws
tra transient
tr true
vo void
vol volatile
wh while

制御構文展開

制御構文を展開することができます。制御構文展開を有効にした後、例えばmainとキー入力してから直後にスペースキーを押します。

制御構文展開有効/無効の設定
カスタマイズ項目 内容
グループ Jde Gen
変数名 Jde Gen Cflow Enable
on / off

制御構文展開を有効にすると、デフォルトでは以下のリストの制御構文の展開が可能になります。

制御構文展開リスト
略語 展開される構文
if if ( ) { }
else else { }
ife if ( ) { } else { }
eif else if ( ) { }
while while () { }
for for () { }
fori for (int = 0; < ; ++) { }
foriter for (Iterator = .iterator(); .hasNext();) { .next(); }
main public static void main(String[] args) { }
switch switch () { case: break; default: break; }
case case : break;
try try { } catch ( e) { }
catch catch ( e) { }
tryf try { } catch ( e) { } finally { }
finally finally { }

ここで記述した展開される構文では改行やインデントを省略しています

また、展開した制御構文の閉じ括弧の後にコメントを生成するかしないかを設定することができます。

制御構文展開時のコメント生成有効/無効の設定
カスタマイズ項目 内容
グループ Jde Gen
変数名 Jde Gen Comments
on / off
制御構文展開時のコメント生成有無
// コメント生成有の場合、[i][f][スペース]で以下のコードが生成
if ( ) {

} // end of if ()

// コメント生成無の場合、[i][f][スペース]で以下のコードが生成
if ( ) {

}

import文の管理

import文の追加

コードを書いているときに、新しいクラスを使用するために、import文を書くのは面倒な作業です。JDEでは、コマンド1つでimport文を追加する機能があります。既にimport済みなら、2重にimport文を加えることはありません。

import文の追加
操作内容 コマンド メニュー
import文の追加 C-c C-v C-z [JDE]→[Code Generation]→[Wizards]→[Import class..]

ミニバッファにClass:とクラス名を聞いてくるので、クラス名を入力します。本コマンド実行時にあらかじめキャレット(カーソル)をimportしたいクラス名の上または直後に置いておくと、ミニバッファにそのクラス名が現れます。

Tips1
JDK標準以外のクラスライブラリに含まれるクラスを使用するときは、あらかじめJde Global Classpathにそのライブラリを設定しておく必要があります。
Tips2
自動で挿入されるimport文の位置はファイル先頭でpackage文があればその後です。既にimport文が存在していれば、そのimport文群の最後に挿入されます。そこで、あらかじめimport文を置きたい位置に1行だけimport文を記述しておけば、以後自動生成されるimport文はその続きに挿入されます。

import文追加時に、指定したクラス名が複数のパッケージに存在する場合はどれをimportするかダイアログバッファを開いて聞いてきます。ほとんど使用しないパッケージがあるならば以下の設定で指定しておくことで外すことができます。

import時に検索対象から外したいパッケージの指定
カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Import Excluded Packages
パッケージ名(正規表現可)

import文の削除

開発が進んでいくと、Javaのソースコードにあるimport文が不要になっているにもかかわらず残ってしまっていることがあります。ソースコードを目で追いかけて不要なimport文を探し出すのは面倒だし困難で間違いも起きやすいです。

import文の削除
操作内容 コマンド メニュー
import文の削除 M-x jde-import-kill-extra-imports なし

import文の並び換え

コーディングしながら随時import文を自動生成していると、import文の並びがばらばらになってしまいます。ソースコードの美しさの観点ではimport文はやっぱりパッケージごとに整然と並んでいて欲しいです。

  1. M-x jde-import-organizeとコマンドを実行すれば、import文群をソートしてくれます。
  2. プロジェクト設定で以下の設定をしておくと、import文自動生成時にソートしてくれます
import文の並び換え
操作内容 コマンド 備考
import文の並び換え M-x jde-import-organize
import文の並び換え M-x jde-import-sort アルファベットの昇順(降順)に並べ換える

また、以下の設定をしておくと、import文の追加時に自動的にソートされます。

カスタマイズ項目 内容
グループ Jde Project
変数名 Jde Import Auto Sort
on

ソースコード補完

フィールド・メソッド名の補完

クラスやインスタンスのフィールドやメソッド名を補完する機能があります。コーディング中、クラス名または変数名をタイプ後にピリオド('.')をタイプし、その後、以下の表の操作のどちらかを実行します。

フィールド名・メソッド名の補完
操作内容 キーバインド メニュー
最初の補完候補の挿入 C-c C-v . なし
補完候補の一覧表示 C-c C-v C-. なし

最初の補完候補の挿入

ミニバッファに候補が現れます。例えば、StringBuffer型の変数bufferに対して、buffer.apとタイプした後にC-c C-v .とタイプすると、ミニバッファにappend(...)と候補となるフィールド・メソッド名が表示され、バッファにはその最初の候補が挿入されます。候補が複数あるときは、C-c C-v .とタイプする毎に次の候補がミニバッファに表示されます。

補完候補の一覧表示

ポップアップメニューに候補の一覧が表示されます。

System.out.println呼び出しの補完

System.out.println("...");というコードを書くことは非常に多いですが、タイプするのは長くて面倒です。そこで、、、

System.out.println呼び出しの補完
操作内容 キーバインド メニュー
println補完 C-c C-v C-l [JDE]→[Code Generation]→[Templates]→[println...]

ミニバッファにPrint out:と、printlnメソッドへ渡す引数を聞いてくるので、キータイプします。ミニバッファに入力した文字列がprintlnメソッドの引数として記述されます。例えばSystem.out.println("Hello, World");とコーディングしたい場合は、ミニバッファには"Hello, World"とキータイプします。

委譲コードの自動生成

Javaでは(というかオブジェクト指向プログラミングでは)、委譲を使うことがよくあります。委譲は機械的なコーディングをしなければならないので、かなり苦痛です。それをやわらげてくれる機能がJDEEにあります。

委譲コードの自動生成
操作内容 コマンド メニュー
委譲コード生成 [JDE]→[Code Generation]→[Wizards]→[Delegate Methods...]

ミニバッファに属性名を聞いてくるので、フィールド名をキータイプします。フィールド名のオブジェクトへ、そのクラスが持つpublicメソッドの呼び出しを委譲するコードを生成します。

メソッドのオーバーライドコードの生成

スーパークラスで定義したメソッドをオーバーライドするときに、サブクラスでそのメソッドのシグネチャを1からキータイプするのは手間であるだけでなく、メソッド名に1文字でもスペルミスがあるとオーバーライドではなく新規メソッドとして定義されてしまうため、デバッグに非常に苦労します。JDEEでは、このオーバーライドしたいメソッドのシグネチャ記述を自動で行うことが出来ます。

メソッドのオーバーライドコードの生成
操作内容 キーバインド メニュー
オーバーライドメソッド生成 C-c C-v o [JDE]→[Code Generation]→[Wizards]→[Override Method]

ミニバッファにMethod name:と聞いてくるので、メソッド名をタイプします。

インタフェースを実装するコードの生成

Interfaceで定義したメソッドを実装するときに、実装クラスでそれらメソッドのシグネチャを1から打ち込むのは手間です。JDEEでは、この手間をコード生成機能で省いてくれます。実装したいInterfaceで定義されているメソッドがコメント付きで挿入されるほか、クラス定義のimplementsの生成、Interfaceで定義されているメソッドの引数・戻り値型がimport文として生成されます。実装したいインタフェースのクラスがクラスパスに含まれている必要があります。クラスパスは、JDEEのプロジェクトで設定します。

インタフェースを実装するコードの生成
操作内容 キーバインド メニュー
インタフェース実装コード生成 C-c C-v i [JDE]→[Code Generation]→[Wizards]→[Implement Interface...]

ミニバッファにInterface Nameを聞いてくるので、クラス名をキータイプします。ここで補完可能なクラスは既にJDEEのクラスパスで指定している中になくてはなりません。

Getter/Setterの自動生成

Javaでは、インスタンス変数はメソッドを介してアクセスすることがよいコーディングとされています。したがって、コーディング中はインスタンス変数の定義とそのアクセス用メソッドをひたすら記述していく、やや機械的な作業を強いられます。そんなときにこのコード生成機能を使います。JDEには2通りの生成方法があります。

Getter/Setterの自動生成
操作内容 コマンド メニュー
1組のGetter/Setter生成 jde-gen-get-set [JDE]→[Code Generation]→[Templates]→[Get/Set Pair...]
クラスで定義したフィールドのGetter/Setter生成 jde-wiz-get-set-methods [JDE]→[Code Generation]→[Wizards]→[Generate Get/Set Methods]

一組のGetter/Setter生成

ミニバッファにVariable typeを聞いてくるので、生成するフィールドの型名をタイプします。次に、Variable nameを聞いてくるので、生成するフィールドの変数名をタイプします。すると、下記のようなソースコードがカーソル位置に展開されます。

Variable type:String Variable name:firstNameで生成した例
    String firstName;

    /**
     * Get the FirstName value.
     * @return the FirstName value.
     */
    public String getFirstName() {
        return firstName;
    }

    /**
     * Set the FirstName value.
     * @param newFirstName The new FirstName value.
     */
    public void setFirstName(String newFirstName) {
        this.firstName = newFirstName;
    }

クラスで定義したフィールドのGetter/Setter生成

クラスに定義されているフィールドのGetメソッドとSetメソッドを自動生成します。既にGet/Setメソッドが存在していれば、二重に生成されないようになっています。以下設定について述べます。

  1. setメソッドの引数名は、"arg" +フィールド名となっています。この"arg"は自由に変更できます。カスタマイズでjde-wiz-get-set-variable-prefixの値を変更します。
    Setterの引数名の接頭辞の設定
    カスタマイズ項目 内容
    グループ Jde Wiz
    変数名 Jde Wiz Get Set Variable Prefix
    接頭辞の文字列を指定する。例:new
  2. Set/GetメソッドのJavadocコメントは、カスタマイズでjde-wiz-get-javadoc-template、およびjde-wiz-set-javadoc-templateの値で変更できます。
  3. コーディング規約でフィールド名の接頭辞または接尾辞に一定の記号や文字列を付与せざるを得ない場合があります(例:_name)。この記号がGet/Setメソッドのメソッド名に含まれないようにすることができます。カスタマイズでjde-wiz-get-set-variable-conventionの値を設定します。
    Getter/Setterの命名規約の設定
    カスタマイズ項目 内容
    グループ Jde Wiz
    変数名 Jde Wiz Get Set Variable Convention
    Prefix/Postfix/Everything after the first upcase letter/nilの4択。Prefix/Postfixの場合はその文字列を指定。
  4. Setメソッドだけ、あるいはGetメソッドだけを生成したい場合は、カスタマイズでjde-wiz-get-set-methods-includeの値を"Get only"か"Set only"に変更します(デフォルトは"Both")。
  5. Setメソッド、Getメソッドの並び順を指定することができます。カスタマイズでjde-wiz-get-set-methods-orderの値を以下から選択します。
    "Get followed by set for each field"
    "Set followed by get for each field"
    "All get methods followed by all set methods"
    "All set methods followed by all get methods"

Emacsによるコーディング支援

Emacs自身にも、コーディングを強力に支援する様々な機能が備わっています。順次紹介していきます。

文字補完(動的略語補完)

Emacsの最強機能の一つです。Emacsが開いているファイル内の文字を略語展開の候補として拾ってきます。事前に略語の登録が不要なので動的と呼ばれています。以下の使用例を見ると一目瞭然でしょう。

動的略語展開の使用例(1)
ObjectOutputStream ostream = new Ob

Javaでは、比較的長い文字列が繰り返し登場します。これを手で一文字一文字タイプするのは苦痛です。かといって、マウスで選択してペーストするのは操作が繁雑でますます苦痛です。Emacsでは、このようなときに'Ob'とタイプした後にM-/を実行すると、Emacsが開いている各ファイルから'Ob'で開始する単語を拾って単語を展開してくれます。

動的略語展開の使用例(2)
ObjectOutputStream ostream = new ObjectOutputStream

複数の候補が合致するときは、繰り返しM-/を押すと次々単語が置き換わります。もし、候補を一覧したいときは、C-M-/を押すと別バッファが開いて候補一覧が表示されます。

動的略語展開の操作
操作内容 コマンド
カーソル位置に候補を展開 M-/
バッファを開いて候補一覧を表示 C-M-/

Javaの場合、クラス名や変数名は大文字・小文字を区別します。そこで、動的略語展開の時に、大文字・小文字を区別する設定にしておく方が使い易いでしょう。

.emacsに記述
; 動的略語展開の設定(大文字・小文字を区別する)
(setq dabbrev-case-fold-search nil)

スペルチェック

キーボードマクロ

置換系

単語の先頭を大文字にする

カーソルの直前2文字を入れ換える

Q & A

インストール・設定におけるQ & A

JDEモード時にエラーThe wrong version of XXX is installed, please install NNN

JDEEは依存している各パッケージのバージョンチェックを行っています。あまり新し過ぎるパッケージを入れた場合にチェックでエラーとなってしまうことがあります。以下のカスタマイズ変数でパッケージバージョンチェック機構を無効にすることができます。

カスタマイズ項目 内容
グループ Jde
変数名 Jde Check Version Flag
off (nil)

あちこちのディレクトリにsemantic.cacheというファイルが生じる

CEDETに含まれるSemanticパッケージのデフォルト設定では、ファイルが存在するディレクトリに、semantic.cacheという名前のデータベースファイルを作成します。これを、以下のように設定してあるディレクトリに集めることができます。

.emacsに記述
;semantic cache is ~/.semantic
(setq semanticdb-default-save-directory (expand-file-name "~/.semantic"))

参考情報

リンク

付録

CEDETを使わない場合

eieio、speedbar、semantic bovinatorの3つがセットになったcedetパッケージを使用せず、個別に利用する場合の情報を以下に示します。

CEDETパッケージ
パッケージ種類 ファイル名 バージョン 入手先 備考
eieio eieio-0.17.tar.gz 0.17 http://cedet.sourceforge.net/eieio.shtml 0.17beta3以上を要求
speedbar speedbar-0.14beta4.tar.gz 0.14 beta4 http://cedet.sourceforge.net/speedbar.shtml 0.14beta2以上を要求
Semantic Bovinator semantic-1.4.4.tar.gz 1.4.4 http://cedet.sourceforge.net/semantic.shtml 1.4beta13以上を要求

speedbar、eieio、semanticの個別インストール

統合パッケージであるCEDETを使わず、speedbar、eieio、semanticを個別にインストールする場合の例を紹介します。

speedbarのインストール

tar+gz形式のアーカイブを解凍して、site-lispディレクトリ下に展開します。これだけでOKですが、もしバイトコンパイルしたいなら、GNU makeコマンドを入手してmakeを実行します。

speedbarのインストール(Windows+bash)
torutk$ cd /win32app/Meadow/site-lisp
site-lisp$ tar xzf /tmp/speedbar-0.14beta4.tar.gz
site-lisp$ cd speedbar-0.14beta4
speedbar-0.14beta4$ make \
    EMACS=/win32app/Meadow/1.15/bin/MeadowNT.exe
  :
speedbar-0.14beta4$

eieioのインストール

tar+gz形式のアーカイブを解凍して、site-lispディレクトリ下に展開します。これだけでOKですが、もしバイトコンパイルしたいなら、GNU makeコマンドを入手してmakeを実行します。

eieioのインストール(Windows+bash)
torutk$ cd /win32app/Meadow/site-lisp
site-lisp$ tar xzf /tmp/eieio-0.17.tar.gz
site-lisp$ cd eieio-0.17
eieio-0.17$ make EMACS=/win32app/Meadow/1.15/bin/MeadowNT.exe \
    LOADPATH=../speedbar-0.14beta4
  :
eieio-0.17$

semanticのインストール

tar+gz形式のアーカイブを解凍して、site-lispディレクトリ下に展開します。これだけでOKですが、もしバイトコンパイルしたいなら、GNU makeコマンドを入手してmakeを実行します。

semanticのインストール(Windows+bash)
torutk$ cd /win32app/Meadow/site-lisp
site-lisp$ tar xzf /tmp/semantic-1.4.4.tar.gz
site-lisp$ cd semantic-1.4.4
semantic-1.4.4$ make EMACS=/win32app/Meadow/1.15/bin/MeadowNT.exe \
    "LOADPATH=../eieio-0.17 ../speedbar-0.14beta4"
  :
semantic-1.4$

jdee-2.3.2のインストール

tar+gz形式のアーカイブを解凍して、site-lispディレクトリ下に展開します。これだけでOKですが、もしバイトコンパイルしたいなら、GNU makeコマンドを入手してmakeを実行します。

jdeeのインストール(Windows+bash)
torutk$ cd /win32app/Meadow/site-lisp
site-lisp$ tar xzf /tmp/jde-latest.tar.gz
site-lisp$ cd jdee-2.3.2/lisp
lisp$ make EMACS=/win32app/Meadow/1.15/bin/MeadowNT.exe \
    EIEIO=../../eieio-0.17 ELIB=../../elib-1.0 \
    SEMANTIC=../../semantic-1.4.4 \
    SPEEDBAR=../../speedbar-0.14beta4
  :
lisp$

JDEE開発の歴史

JDEEバージョン

JDEE各バージョンのリリース日
バージョン リリース日
2.1.5 1999.03.12
2.1.6 2000.06.02
2.1.8 2000.06.24
2.1.9 2000.07.24
2.2.1 2000.08.08
2.2.2 2000.08.14
2.2.3 2000.09.05
2.2.4.1 2000.09.19
2.2.5.2 2000.10.10
2.2.6 2000.12.22
2.2.7 2001.05.23
2.2.7.2 2001.05.24
2.2.8 2001.08.26
2.2.9b5 2001.11.09
2.2.9b6 2001.11.22
2.2.9b7 2001.11.29
2.2.9b8 2002.01.19
2.2.9b9.1 2002.03.12
2.2.9b10 2002.06.18
2.2.9b11 2002.09.10
2.2.9b12 2002.09.11
2.2.9 2002.11.11
2.2.9.2 2002.11.21
2.3.0 2002.12.2
2.3.1 2002.12.10
2.3.2 2002.12.31
2.3.3b1 2003.06.17
2.3.3b2 2003.06.18
2.3.3b3 2003.06.22
2.3.3b4 2003.06.26
2.3.3b5 2003.07.08
2.3.3b6 2003.09.29
2.3.3 2003.12.9
2.3.4b1 2004.04.26
2.3.4 2004.11.9
2.3.5 2004.12.17