emacs开发java之安装

skiwnywh      2022-04-26     774

关键词:

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)

由于公司规定,里面增加了开发用的文件头的说明。
 
 
 
 

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow





















第0课-搭建开发环境之安装qt

第0课-搭建开发环境之安装Qt1.课程学习的原材料  —VisualStudio2010  —QtSDK4.7.4  —QtCreator2.4.12.VisualStudio2010    (1)用于学习Windows上GUI程序设计的原理  (2)体会使用C/C++编写GUI窗口应用程序  (3)展现Qt对于Win... 查看详情

学写网站前端配置之安装nvmnodenpm

...具。使用node主要是要使用npm,能够方便的管理一些前端开发的包。nvm安装过程(windows):1.下载2.点击直接安装3.配置:①将nvm的路径添加到环境变量之中。②打开cmd,然后输入nvm,如果没有提示找不到命令,说明已经安装成功... 查看详情

如何开发自己的搜索帝国之安装ik分词器

   Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词,我是中国人 不能简单的分成一个个字,我们更希望“中国人”,“中国”,“我”这样的分词,这样我们... 查看详情

yarn之安装依赖包

...您的项目package.json文件中检索,并存储在yarn.lock文件中。开发包时,安装依赖关系最常见的是在您刚刚检出了需要这些依赖项的项目的代码。项目中的另一位开发人员添加了一个新的依赖项,您需要选择。安装选项安装依赖关系... 查看详情

安全性测试之安装包测试

...这个安装包中获取项目的源代码。从安全方面考虑,程序开发人员是否会在程序源代码中硬编码一些敏感信息,如密码等。常用的反编译方法是使用dex2jar工具并结合jd-gui工具(java的反编译工具)查看源 查看详情

docker技术之安装

...一下docker:    Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进... 查看详情

小5聊vs2019开发工具之安装和部署winform项目

...理扩展下载安装和部署功能 installerProjects记得需要关闭VS开发工具,然后会自动安装  2、新建项目搜索setupproject 默认界面 3、文件夹说明ApplicationFolder:应用程序文件夹、User'sDesktop:桌面 查看详情

浅尝辄止freebsd之安装篇(完整图解)

...算机系统提供了不同程度的支持。并且一些原来BSDUNIX的开发者后来转到FreeBSD的开发,使得FreeBSD在内部结构和系统API上和UNIX有很大的兼容性。由于FreeBSD宽松 查看详情

05-linux之安装jdk

在Linux上安装JDK1.在/usr/local中创建java目录  命令:mkdir/usr/local/java     2.安装FileZilla(此软件可以将window中的文件传到虚拟机)  下载地址:链接:https://pan.baidu.com/s/1FlIhO3w-JXyFevh2Uv5XXQ  提取码:gib4  JDK... 查看详情

eclipse之安装jadclipse插件直接查看class文件

...pse之安装Jadclipse插件直接查看class文件 我们在Eclipse中开发项目的时候会引入很多jar包,有时候想看一下jar包中类的代码,发现需要引入jar包的source源码包才能查看,那么下面教大家个方法可以直接查看没有源码包的class内容... 查看详情

jmeter学习之安装篇

一、Jmeter简介Jmeter是Apache组织开发的基于Java开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常被用做接口功能测试和性能测试。Jmeter能够很好的支持各种常见接口,如HTTP(S)... 查看详情

redis之安装与简单使用

操作系统环境‘   CentOSLinuxrelease7.2.1511(Core) redis版本  redis-3.2.9 安装过程  从官网https://redis.io/下载redis软件后放到linux服务器/app目录中,解压后查看README文档,了解安装步骤$wgethttp://download.redis.io/releases/redis-3.2... 查看详情

c语言探索之旅第三部分第一课:sdl开发游戏之安装sdl(代码片段)

内容简介1、课程大纲2、第三部分第一课:SDL开发游戏之安装SDL3、第三部分第二课预告:SDL开发游戏之创建窗口和画布课程大纲我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案。... 查看详情

go1.8之安装配置

...太快,也没怎么使用,就荒废掉了,今年有项目需要用go开发,重新捡起。这是我在学习go语言过程中整理的内容,这里记录下,也方便我以后查阅。操作系统:CentOS6.9_x64go语言版本:1.8.3安装go这里直接安装二进制,其它方式请... 查看详情

app安全测试之安装/卸载/更新测试

 在app测试中,有个不可忽视的测试方向,就是安装、卸载和更新,有很多人问到了这个问题,我就在这里做了一个总结,有补充的请留言哦安装1.正常安装测试,检查是否安装成功。2.APP版本覆盖测试。例如:先安装一个1.0... 查看详情

自动化之安装操作系统——pxe

    PXE:PrebooteXecutionEverionment,Intel公司开发的预启动执行环境,使用这套环境能够使我们在为大量的计算机部署操作系统的时候,不必在每一台新主机上部署操作系统,而是让其自动安装,我们只需要让机器开机... 查看详情

node之安装篇

  本篇主要介绍node的安装与相关配置      官网: https://nodejs.org/en/  Linux:       Windows:  查看详情

linux安装hadoop之安装jdk

在centos上安装jdk.1、去官网下载安装包。我这里是jdk-7u79-linux-x64.rpm。2、在centos建立usr/java目录。只需要在usr下mkdirjava即可。3、上传rpm包。rz jdk-7u79-linux-x64.rpm。如果不能执行rz命令,yuminstalllrzsz-y。4、安装 #rpm-ivh jdk-7u7... 查看详情