Emacs开发Java
前言
笔者把多年UBuntu上用Emacs和Maven开发Java应用(包括TestNG和Web application)的技巧总结出来,希望对有志于Linux开发的朋友有帮助。我并不反对用IDE开发,但是很多时候,Emacs能够带来更快的速度(同时对机器硬件要求也很小),对Java工程的更透彻了解,更容易和开源领域的工程师交流。我还不怎么喜欢用鼠标,Emacs让我能够解放我的右手。
安装
1.确保你已经安装了JDK
2.确保你安装了Maven
3.安装Emacs:sudo apt-get install emacs
4.下载jdee-bin-2.4.0.1.zip和依赖文件elib-1.0.zip,地址在这里:http://sourceforge.net/projects/jdee/files/
5.将两个文件解压到/opt/emacs_plugins/目录下面
6.还需要下载ecb-2.40和ecb.el,也放在emacs_plugins目录下
7.下载javadoc-help的javadoc-help.el文件放在/opt/emacs_plugins/java目录下面http://javadochelp.sourceforge.net/
配置.emacs
配置JDEE
;;JDEE configuration
(add-to-list 'load-path (expand-file-name "/opt/emacs_plugins/jdee-2.4.0.1/lisp"))
(load-file "/opt/emacs_plugins/cedet-1.0pre7/common/cedet.el")
(add-to-list 'load-path (expand-file-name "/opt/emacs_plugins/elib-1.0"))
(add-to-list 'load-path (expand-file-name "/opt/emacs_plugins/ecb-2.40"))
;;(add-to-list 'load-path (expand-file-name "/opt/emacs_plugins/jde-jalopy"))
(load-file (expand-file-name "/opt/emacs_plugins/ecb-2.40/ecb.el"))
(require 'font-lock)
(require 'ecb)
(require 'ecb-autoloads)
(require 'jde)
(custom-set-variables
'(browse-url-browser-function (quote browse-url-generic))
'(browse-url-generic-program "chromium-browser")
'(column-number-mode t)
'(jde-complete-function (quote jde-complete-menu))
'(jde-debugger (quote ("jdb")))
'(jde-jdk-registry (quote (("1.6.0_35" . "/usr/jdk1.6"))))
'(jde-resolve-relative-paths-p t)
'(jde-run-option-debug (quote ("Server" "Socket" "javadebug" nil "5005" t))))
查看API文档
可惜的是javadoc-helper不能检索jdk文档。自己在浏览器里面保留一个书签代替吧。
;; Java document support
(add-to-list 'load-path (expand-file-name "/opt/emacs_plugins/java"))
(require 'javadoc-help)
(javadoc-set-predefined-urls '("/opt/java_docs/common-cache-1.0.0-javadoc"
"/opt/java_docs/commons-codec-1.4-javadoc"
"/opt/java_docs/commons-logging-1.1.1-javadoc"
"/opt/java_docs/ehcache-server-1.0.0-javadoc"
"/opt/java_docs/gson-1.7.1-javadoc"
"/opt/java_docs/jcommander-1.12-javadoc"
"/opt/java_docs/jersey-apache-client-1.9.1-javadoc"
"/opt/java_docs/jersey-client-1.9.1-javadoc"
"/opt/java_docs/jersey-core-1.9.1-javadoc"
"/opt/java_docs/joda-time-1.6.2-javadoc"
"/opt/java_docs/junit-4.8.2-javadoc"
"/opt/java_docs/logback-classic-1.0.0-javadoc"
"/opt/java_docs/logback-core-1.0.0-javadoc"
"/opt/java_docs/lombok-0.10.4-javadoc"
"/opt/java_docs/mongo-java-driver-2.7.2-javadoc"
"/opt/java_docs/mybatis-3.0.5-javadoc"
"/opt/java_docs/slf4j-api-1.6.4-javadoc"
"/opt/java_docs/snakeyaml-1.6-javadoc"
"/opt/java_docs/testng-6.1.1-javadoc"))
(global-set-key [(f1)] 'javadoc-lookup) ; F1 to lookup
(global-set-key [(shift f1)] 'javadoc-help) ; Shift-F1 to bring up menu
注意,上面的文档目录都是自己从互联网上下载的,如果使用maven构建项目,可以很方便的用一个脚本文件将文件jar包下载下来,并且复制到/opt/java_docs/目录下。
mvn clean
mvn dependency:resolve -Dclassifier=javadoc
rm -rf /opt/java_docs
mkdir /opt/java_docs
cp $(find ~/.m2/repository/ -name *javadoc.jar) /opt/java_docs/
下面这个脚本可以帮助我把所有jar文件解压到同名目录下。
#!bin/sh
path=/opt/java_docs
for f in $(ls $path/*.jar);
do
name=`basename $f`
name2=`echo $name | sed 's/\.jar//g'`
echo $name2
mkdir $path/$name2
cd $path/$name2
jar xvf $path/$name
done
rm -f *.jar
这个脚本可以生成需要配置的目录路径,用在.emacs中。
path=/opt/java_docs
for f in $(ls $path/);
do
name=`basename $f`
echo \"/opt/java_docs/$name\"
done
配置工程文件
为每一个Maven工程目录里面创建一个prj.el文件。下面的是一个例子。/opt/jdk_src的jdk源代码文件是从jdk目录的src.zip解压而来。
jde-global-classpath里面列出了本项目使用的jar包。注意是绝对路径。
'(jde-db-option-connect-socket (quote (nil "5005"))) 指的是远程调试的连接端口,后面调试一节再细讲。
'jde-sourcepath 里面指定了源代码路径
手动配置这些东西的确有点麻烦,将来可以学点lisp编程,在Emacs里面自动产生这个文件。先凑合着用吧。
(jde-project-file-version "1.0")
(jde-set-variables
'(jde-db-source-directoiries "/opt/jdk_src")
'(jde-global-classpath (quote ("./target/classes"
"./target/test-classes"
"/home/chenshu/.m2/repository/joda-time/joda-time/1.6.2/joda-time-1.6.2.jar"
"/home/chenshu/.m2/repository/com/sun/jersey/jersey-client/1.9.1/jersey-client-1.9.1.jar"
"/home/chenshu/.m2/repository/org/testng/testng/6.0.1/testng-6.0.1.jar")))
'(jde-db-option-connect-socket (quote (nil "5005")))
'(jde-sourcepath (quote ("./src/main/java/com/freebird/business"
"./src/test/java/com/freebird/test"
))))
Windows7 下的配置
最后附一个windows7的配置,当时整了好久,早算cedet不报错,勉强能用。
(setq debug-on-error t)
(global-set-key [f5] (lambda() (interactive) (revert-buffer t t)))
(setq c-basic-offset 4)
(show-paren-mode)
;;JDEE configuration
(add-to-list 'load-path (expand-file-name "c:/emacs_plugins/jdee-2.4.0.1/lisp"))
(add-to-list 'load-path (expand-file-name "c:/emacs_plugins/cedet-1.0/common"))
(load-file "c:/emacs_plugins/cedet-1.0/common/cedet.el")
(add-to-list 'load-path (expand-file-name "c:/emacs_plugins/cedet-1.0/semantic"))
(add-to-list 'load-path (expand-file-name "c:/emacs_plugins/cedet-1.0/eieio"))
(add-to-list 'load-path (expand-file-name "c:/emacs_plugins/cedet-1.0/speedbar"))
(add-to-list 'load-path (expand-file-name "c:/emacs_plugins/elib-1.0"))
(add-to-list 'load-path (expand-file-name "c:/emacs_plugins/ecb-2.40"))
(load-file (expand-file-name "c:/emacs_plugins/ecb-2.40/ecb.el"))
(require 'font-lock)
(require 'ecb)
(require 'ecb-autoloads)
(require 'jde)
(custom-set-variables
'(browse-url-browser-function (quote browse-url-generic))
'(browse-url-generic-program "chromium-browser")
'(column-number-mode t)
'(jde-gen-buffer-boilerplate (quote (nil "////////////////////////////////////////////////////////////////////////////////
//Copyright (c) 2011-2012 Esri
// Esri (Beijing) Software Research and Development Center
//
// All rights reserved under the copyright laws of the United States.
////////////////////////////////////////////////////////////////////////////////")))
'(jde-complete-function (quote jde-complete-menu))
'(jde-debugger (quote ("jdb")))
'(jde-db-option-connect-socket (quote (nil "9009")))
'(jde-jdk-registry (quote (("1.6.0_29" . "C:/Program Files/Java/jdk1.6.0_29"))))
'(jde-resolve-relative-paths-p t)
'(jde-run-option-debug (quote ("Server" "Socket" "javadebug" nil "5005" t))))
(setq tab-width 4)
(setq c-basic-offset 2)
由于公司规定,里面增加了开发用的文件头的说明。
分享到:
相关推荐
emacs开发java的必备武器,windows下的工具
关于c c++ java python开发的emacs配置文件
meghanada-emacs, 用于Emacs的更好的Java开发环境 meghanada模式 为Emacs提供更好的Java开发环境Meghanada 是一个新的小模式( meghanada-mode ),旨在改善Java的编辑体验。 它通过使用一个Emacs包和 meghanada服务器
meghanada-emacs:针对Emacs的更好的Java开发环境
Emacs被设计的“无所不能”,号称是世界上最强大的文本编辑器,可在Linux,BSD,macOS,Windows等平台上使用,Emacs具有命令可以执行常见但复杂的操作,以及围绕它开发了近40年的插件和配置技巧。与Vim不同,Emacs ...
Emacs被设计的“无所不能”,号称是世界上最强大的文本编辑器,可在Linux,BSD,macOS,Windows等平台上使用,Emacs具有命令可以执行常见但复杂的操作,以及围绕它开发了近40年的插件和配置技巧。与Vim不同,Emacs ...
Emacs,著名的集成开发环境和文本编辑器。Emacs被公认为是最受专业程序员喜爱的代码编辑器之一,另外一个vim。 EMACS,即Editor MACroS(编辑器宏)的缩写,最初由Richard Stallman(理查德·马修·斯托曼)于1975年在...
-emacs-eclim为emacs开发人员带来了一些很棒的eclipse功能。 它基于eclim项目 -通过弹出菜单自动完成。 用作基础映像,它是基于Ubuntu 14.04 LTS构建的。 运行Docker容器 Docker映像发布在。 您可以拉出图像并运行...
java实战开发1200例源码 目录 动机 厌倦了到处复制和重新初始化我的 emacs 环境。 因此我认为引导我的 emacs(-configuration) 以便它管理自己所有相关的包和依赖项可能是一个有趣的练习。 为此,我使用 org-mode ...
emacs-eclim:该项目为emacs开发人员带来了一些很棒的eclipse功能。 它基于eclim项目,该项目为vim提供了eclipse功能。 sennyemacs-eclim的开发已移至此处
j2me中文教程从事JAVA手机开发的教程.pdf 博文链接:https://yidwo.iteye.com/blog/49580
您可以通过Homebrew安装最新的Emacs,如下所示: $ brew cask install emacs 开箱即用的emacs-up支持在Clojure版本1.8和Java 8 (及更高版本)上进行开发。 如果你是谁的人有计划对Clojure的1.7 , 1.6或以上版本,...
百度地图开发java源码 Eclipse CDT 我们都知道高效地编程离不开一款高效的IDE,但是上个十年在ruby等动态语言以及前端技术逐渐流行的时候,社区里掀起了一阵去IDE浪潮,很多人开始诟病IDE启动速度慢,资源占用多,转...
Emacs配置 我使用的Emacs(27+)配置! 特色: Scala开发 Python开发 Java开发 组织模式的东西 要获取灵感,请参见: 一定还要检查流行的Emacs发行版: 也可能会有所帮助。
java二次开发源码下载科林 Coreen 是一个代码阅读环境。 它旨在促进阅读和理解代码的过程。 它不是一个IDE,其主要目标是编写代码,其次支持代码阅读和理解。 也就是说,Coreen 必然会与各种 IDE 的功能重叠。 ...
Java 源代码本质上其实就是普通的文本文件,所以理论上来说任何可以编辑文本文件的编辑器都可以作为我们的 Java 代码编辑工具。比如:Windows 记事本,Mac OS X 下的文本编辑,Linux 下的 vi、emacs、gedit、DOS 下...
安装go语言开发环境 李仕成;15331163 安装VSCode编辑器 如果使用的是vim或emacs,则请跳过这部分 关于VSCode的Linux版本安装,参考官网教程。 Visual Studio Code 是一个轻量级但功能强大的源代码编辑器,可在 ...
EMACS 与 JVM 的集成。 马拉巴尔正在转向 JDEE 截至 2016 年 10 月 21 日,马拉巴尔模式正在与 . 将不再在 malabar 上做任何工作,所有有用的功能已经或将被转移到 JDEE。 我建议使用 JDEE 而不是 malabar(我有)。...