折腾了很久,现在终于设置好JDEE,现在也就具体步骤与遇见的问题分享一下。
你可以通过JDEE - a Java Development Environment For Emacs 查看具体需要安装JDEE所需的组件及步骤
一: Emacs 这个肯定是必须先安装好的,没什么可多说的
二:Collection of Emacs Development Environment Tools (CEDET)
你可以通过官方网站CEDET 对它进一步详细查看它的功能,它可以把其他软件整合到Emacs中,比方说JDEE /ECB(Emacs Code Browser) 同时你还可以参考 A Gentle introduction to CEDET 进行个性化设置。
它的安装参考:在Emacs中使用CEDET
在官网的最下面同时提供了一些关于软件升级的消息,以及与Emacs版本的兼容,尽量都要使用最新的版本。
三:Emacs Lisp library (elib) package
通过link elib 你可以下载一个tar.gz版本的文件,然后你只需把它解压到你指定的文件中就行,是为了等会在.emacs中的load路径设置
四:安装JDK Java Development Kit 也就是java开发组建Java SE Development Kit 7 Downloads ,这个千万不要忘记了,因为我当时就是因为忘记了这个组建的安装它总是会报下面的错误信息。也就是现在没有安装JDK的原因,因为你会发现它实际上就没有Java -version的值,因为我们通常就是通过使用改命令来判断JDK是否安装成功。具体安装JDK请参考:ubuntu配置jdk7.0过程
五:然后就是对.emacs进行设置了,其中load-path 就要根据自己的情况设置了
;;(load-file "/usr/share/emacs/site-lisp/cedet-1.1/common/cedet.el") ;; Set the debug option to enable a backtrace when a ;; problem occurs. ;; 当有问题出现显示错误信息,便于调试 (setq debug-on-error t) ;; Update the Emacs load-path to include the path to ;; the JDE and its require packages. This code assumes ;; that you have installed the packages in the emacs/site ;; subdirectory of your home directory. ;; 加载所需的package (add-to-list 'load-path (expand-file-name "~/emacs/site/jdee-2.4.0.1/lisp")) (add-to-list 'load-path (expand-file-name "~/emacs/site/cedet-1.1/common")) (load-file (expand-file-name "~/emacs/site/cedet-1.1/common/cedet.el")) (add-to-list 'load-path (expand-file-name "~/emacs/site/elib-1.0")) ;;(require 'jde) ;; If you want Emacs to defer loading the JDE until you open a ;; Java file, edit the following line ;; 不自动加载jde-mode (setq defer-loading-jde t) ;; to read: ;; ;; (setq defer-loading-jde t) ;; ;; 编辑.java文件时加载jde (if defer-loading-jde (progn (autoload 'jde-mode "jde" "JDE mode." t) (setq auto-mode-alist (append '(("\\.java\\'" . jde-mode)) auto-mode-alist))) (require 'jde))
其中load 的那段配置具体见:JDEE Installation Guide
第2条:让我们下载speedbar, eieio, and semantic,这几个都是cedet中的组建,而在第4条中它给出了我们加载的是cedet中的其它组建,这点注意。并且让我们注意的是Emacs里面可能有比较老的speedbar跟JDEE不兼容,我感觉应该是让我们用最新的Emacs吧,要不我怎么知道speedbar加载的路径写在哪呀。
第5条:Ensure that the JDEE is loaded at Emacs startup. 所以我们才加了(require 'jde)
第6条:这是一个可以不执行的步骤。jde-compile-jde 意思就是用jde去编译一下lisp环境中的 jde 文件,因为我们在上面已经指定了load位置,其实也就时byte-compile-file jde.el然后生成jde.elc,我们有了这个文件以后可以加快Emacs的启动时间,而对于我们上面的.emacs配置而言没有什么提高因为我们已经设置了只有当碰见.java 文件时才加载jde.因此如果没有的话,也就时会影响.java 文件的打开速度。如果你要执行的话,你必须得先删除jde.elc文件。否则输入命令以后没有效果。
最终在我的加载格式时/home/ryu/emacs/site 目录下面放了四个文件
site
cedet-1.1
elib-1.0
jdee-2.4.0.1
jdk1.7.0_06
六:现在我们.emacs也配置好的话,仍旧时不能够在emacs中编译成功,这个时候要设置JDK了。
首先时M-x customize-variable --> 输入变量jde-jdk-registry -->点击ins(insert)来增加JDK ,注意你会发现我下载的是jdk1.7.0_06,我刚开始认为这个jdk的版本是jdk1.7.0。但是当执行的时候它总是报提示信息说这时JDK 1.6,然后我就把这儿写成了1.6。然后就是点击state,选择save for future session。然后你会发现它在.emacs中自动加入了一句 '(jde-jdk-registry (quote (("1.6" . "/home/ryu/emacs/site/jdk1.7.0_06"))))
配置时遇见的lmenu package obsolete之类的问题:
1:当你设置完以后,因为Emacs 23.3 删掉了一些package,然后当你打开一个.java 文件的时候它终会提醒你它会提示你说"lmenu package obsolete "在我刚开始进行设置的时候,不知道什么原因在加载.emacs它就会报错说什么变量已经不用了,之类的东西。然后我就去网上搜了一下只发现了一个解决办法就是在.emacs中再加入两句话。但是最后当我安装好JDK以后,进行读取java文件的话,它仅仅是提醒lmenu package obsolete,不再显示其他过期的变量了,并且也不会因为这个而出现各种debugger错误信息了,并且我注释掉下面的语句同样只是提醒了,没有其他错误信息,所以就暂且记录下这行语句,必备将来之需。
;;(defun screen-width nil -1) ;;(define-obsolete-function-alias 'make-local-hook 'ignore "21.1")2:1中所说的那些个过时的变量最终在我进行M-x jde-compile-jde 或M-x byte-compile-file jde.el的时候出现了一系列的warning.所以可以不管它了。