JDK1.6のプログラミングをする際に、bshもJDK1.6を指して欲しいのだが、なぜかJDK1.5をbshが使おうとしてしまう。
.emacsに、jde-jdkおよびjde-jdk-registryを記述している場合に発生するようだ。
プロジェクトファイルに保存するようにするとOKなのが不可思議。
解析メモ
bshは、C-c C-v C-k(jde-bsh-run t) で実行される。まず、jde-bsh-runの定義を調べると
;; jde.el (defun jde-bsh-run () (interactive) (bsh-launch (oref 'jde-bsh the-bsh) t)
となっている。次に、bsh-launchの定義を調べると
;; jde.el (defmethod bsh-launch :BEFORE ((this jde-bsh) &optional display-buffer) (let* ((project-ant-home ... (oset this vm (oref (jde-run-get-vm) :path)) ...
続いて、jde-run-get-vmの定義を調べると
;; jde-run.el (defun jde-run-get-vm () (let* ((jdk-version (jde-java-version)) (vm (find-if (lambda (vm-x) (string-match (oref vm-x :version) (if jdk-version jdk-version ""))) jde-run-virtual-machines))) ...
scratchバッファでjde-java-versionを評価すると"1.5.0"となっている。jde-java-versionの定義は、
;; jde.el (defun jde-java-version () (let ((java-version (if jde-jdk (car jde-jdk) (getenv (nth 0 jde-java-environment-variables))))) (if (not-java-version) ...
だが、jde-jdkを評価すると"1.5.0"となっている。jde-jdkはcustomize-variableなのだが、.emacsで定義するとどうも不都合があるようだ。