1

emacs-eclimのインストール ガイドラインに従って、「start-eclimd」で eclimd を起動したかったのですが、Mini-Buffer に次のエラー メッセージが表示されます。

変数としてのシンボルの値が無効です: eclid-port

Eclimd スクリプトは、Eclipse で開始すると問題なく動作します。

シェルでスクリプトを実行すると、次のエラーが表示されます。

jvm は、インストールした Eclipse のバージョンに必要なアーキテクチャをサポートしていません: -d32

私のJavaバージョン:

Java バージョン "1.7.0_21" OpenJDK ランタイム環境 (IcedTea 2.3.9) (7u21-2.3.9-1ubuntu1) OpenJDK 64 ビット サーバー VM (ビルド 23.7-b01、混合モード)

これは 64 ビットの問題ですか?

emacsまたは少なくともスクリプト内のデーモンを制御したいだけです。これらの行は、私の .emacs に関連しています:

;; Eclim - eclipse interface for emacs
(require 'eclim)
(global-eclim-mode)
(require 'eclimd)

完全なスタック トレース:

Debugger entered--Lisp error: (void-variable eclimd-port)
  (let ((eclimd-start-regexp "Eclim Server Started on\\(?: port\\|:\\) \\(?:\\(?:[0-9]+\\.\\)\\{3\\}[0-9]+:\\)?\\([0-9]+\\)")) (save-match-data (let ((output (eclimd--match-process-output eclimd-start-regexp eclimd-process))) (when output (setq eclimd-port (match-string 1 output)) (message (concat "eclimd serving at port " eclimd-port))))) eclimd-port)
  wait-eclimd-start()
  (progn (wait-eclimd-start))
  (if eclimd-wait-for-process (progn (wait-eclimd-start)))
  (when eclimd-wait-for-process (wait-eclimd-start))
  (if (eclimd--running-p) (message "Cannot start eclimd: eclimd is already running.") (message (concat "Starting eclimd for workspace: " workspace-dir "...")) (setq eclimd-process-buffer (make-comint eclimd-process-buffer-name eclimd-prog nil (concat "-Dosgi.instance.area.default=" (replace-regexp-in-string "~" "@user.home" workspace-dir)))) (setq eclimd-process (get-buffer-process eclimd-process-buffer)) (when eclimd-wait-for-process (wait-eclimd-start)))
  (if (not eclimd-prog) (message "Cannot start eclimd: check eclimd-executable variable.") (if (eclimd--running-p) (message "Cannot start eclimd: eclimd is already running.") (message (concat "Starting eclimd for workspace: " workspace-dir "...")) (setq eclimd-process-buffer (make-comint eclimd-process-buffer-name eclimd-prog nil (concat "-Dosgi.instance.area.default=" (replace-regexp-in-string "~" "@user.home" workspace-dir)))) (setq eclimd-process (get-buffer-process eclimd-process-buffer)) (when eclimd-wait-for-process (wait-eclimd-start))))
  (let ((eclimd-prog (eclimd--executable-path))) (if (not eclimd-prog) (message "Cannot start eclimd: check eclimd-executable variable.") (if (eclimd--running-p) (message "Cannot start eclimd: eclimd is already running.") (message (concat "Starting eclimd for workspace: " workspace-dir "...")) (setq eclimd-process-buffer (make-comint eclimd-process-buffer-name eclimd-prog nil (concat "-Dosgi.instance.area.default=" (replace-regexp-in-string "~" "@user.home" workspace-dir)))) (setq eclimd-process (get-buffer-process eclimd-process-buffer)) (when eclimd-wait-for-process (wait-eclimd-start)))))
  start-eclimd("~/workspace")
  call-interactively(start-eclimd t nil)
  execute-extended-command(nil)
  call-interactively(execute-extended-command nil nil)
4

2 に答える 2

1

eclimd.el ファイルにバグがあると思います (~/.emacs.d/elpa/emacs-eclim-20140809.207/eclimd.el)

eclid-port の defvar を追加したところ、この問題は解決しました。(ここで報告: https://github.com/senny/emacs-eclim/issues/156 )

    (defvar eclimd-port nil
      "The active eclimd port number")
于 2014-12-04T18:50:48.540 に答える