2014-02-13 59 views
5

我正在嘗試爲我即將開始的Java項目獲取Emacs + JDEE設置,但我無法讓JDEE正常工作。第一個認爲我想要解決的是能夠跳轉到給定類名的源文件。我使用Cassandra作爲我的遊樂場來處理JDEE。如何配置jdee`find-class-source-file`來使用Cassandra源代碼樹?

我已經在Emacs 23.3.1上設置了新的Ubuntu 12.04 VM作爲我的測試環境。我使用默認Ubuntu存儲庫中的openjdk-1.6,並且JDEE似乎正在使用它。我下載了jdee tar球並將其提取到~/.emacs.d中。 Cassandra源代碼樹是結帳到~/cassandra。我~/.emacs.d/init.el由以下部分組成:

(setq jde-sourcepath '("~/cassandra/src/java")) 
(add-to-list 'load-path "~/.emacs.d/jdee-2.4.1/lisp") 
(load "jde") 

當我打開~/cassandra/src/java/org/apache/cassandra/db/ColumnFamily.java我希望能夠跳到類org.apache.cassandra.config.CFMetaData。當我在那個類的名字運行jde-open-class-at-point我得到以下錯誤:

Cannot determine the class of "CFMetaData". 

同樣,如果我跑

(jde-find-class-source "org.apache.cassandra.config.CFMetaData") 

我得到這個錯誤:

jde-read-class: No match for CFMetaData 

什麼我需要做的讓JDEE找到源文件?

回答

4

我不知道什麼是錯的究竟,但根據文件,jde-open-class-at-point搜索源文件先在jde-sourcepath,然後在jde-global-classpath,然後在$CLASSPATH,然後在當前目錄中。所以也許你需要設置這些可變物。

而且我在這裏發佈我的JDEE設置,希望它可以幫助:(它很適合我)

的.emacs

(add-to-list 'load-path "~/.emacs.d/plugins/jdee-2.4.1/lisp") 
(autoload 'jde-mode "jde" "JDE mode" t) 
(setq auto-mode-alist 
     (append '(("\\.java\\'" . jde-mode)) auto-mode-alist)) 

,而且我用prj.el每個項目:

prj.el

(jde-project-file-version "1.0") 
(jde-set-variables 
'(jde-jdk-registry (quote (("1.6" . "/usr/java/jdk1.7.0_51")))) 
'(jde-jdk (quote ("1.6"))) 
'(jde-xref-db-base-directory "./xrefdb") 
'(jde-xref-store-prefixes (quote (""))) 
'(jde-build-function (quote jde-ant-build)) 
'(jde-ant-enable-find t) 
'(jde-sourcepath (quote ("./src"))) 
'(jde-built-class-path (quote ("./bin"))) 
'(jde-global-classpath (quote ("./bin" "./src" "./lib"))) 
'(jde-electric-return-p t) 
'(jde-enable-abbrev-mode t))