分享

通过Intellij Idea编译Elasticsearch详解

问题导读:
1. 需要的软件环境是什么?
2. 在哪里下载Elasticsearch源码?
3. 如何加入config目录?
4. 如何导入源码?
5. 如何选择Java版本?




解决方案:

一、软件环境

Intellij Idea:2017.1版本

Elasticsearch源码版本:2.3.3

JDK:jdk1.7.0_80.jdk
OS:OS X Yosemite 10.10.3

二、下载Elasticsearch源码

Elasticsearch的发行版本,也就是用户使用的版本要到Elastic官网下载,源码包要到github上下载,下载地址:https://github.com/elastic/elasticsearch/releases,如下图所示下载Elasticsearch 2.3.3版本,选择tar.gz格式。


2017-03-30_235750.png

解压缩到本地,我这里的路径为/Users/bee/Documents/es/elasticsearch-2.3.3,解压后elasticsearch-2.3.3目录下的core文件夹就是源码包的位置,如下图所示。

2017-03-30_235900.png

三、加入config目录

把运行版本的elasticsearch-2.3.3目录下的config文件(elasticsearch.yml所在位置)夹拷贝到/Users/bee/Documents/es/elasticsearch-2.3.3/core目录下,config目录下的文件如下。

  1. elasticsearch-2.3.3
  2.    --config
  3.       --elasticsearch.yml
  4.       --logging.yml     
  5.       --scripts
复制代码


四、Intellij Idea导入源码

打开Intellij Idea,选择Import Project,下一步。


2017-03-31_000124.png

选择elasticsearch-2.3.3/core所在路径,下一步。

2017-03-31_000151.png

选择默认的pom,下一步。

2017-03-31_000221.png

选择默认的pom,下一步。

2017-03-31_000259.png

选择JDK版本,如果有多个JDK,可以在这里进行选择。

2017-03-31_000326.png

设置工程名称,下一步。

2017-03-31_000407.png

工程导入完成以后,在src/main/Java目录下找到org.elasticsearch.bootstrap包下的elasticsearch.java,这时候单独运行会报错,运行之前配置elasticsearch.java的参数,点击Edit Eonfiguration(菜单路径Run->Edit Eonfiguration)。

2017-03-31_000438.png

配置参数:
VM Options中增加-Des.path.home路径为ES源码包位置。


  1. -Des.path.home=/Users/bee/Documents/es/elasticsearch-2.3.3/core
复制代码


Program arguments中增加

  1. start
复制代码


2017-03-31_000608.png

点击OK,运行elasticsearch.java。

2017-03-31_000637.png

如果一切顺利,可以在console中看到以下输出。

2017-03-31_000706.png

访问http://localhost:9200/:

2017-03-31_000742.png

至此,Intellij Idea编译Elasticsearch源码成功!

五、关于JDK版本

第一次编译的时候使用的是jdk1.8.0_112.jdk,出现以下错误,改成最新的jdk1.8.0_121.jdk仍然不行,后来发现是mac版JDK的一个bug,换成jdk1.7.0_80.jdk一切OK。


  1. objc[413]: Class JavaLaunchHelper is implemented in both
  2. /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/bin/java and
  3. /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/jre/lib/libinstrument.dylib.
  4. One of the two will be used. Which one is undefined.
复制代码


2017-03-31_000832.png

转自:csdn作者:小蜜蜂_

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条