![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CMzMWY3UWOkNDMjRjZzcDOlhTY0YjZwQDMklTNmljN58CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
版本要求
我们编译的是 Elasticsearch 7.14.1 版本,在源码根目录下的 CONTRIBUTING.md 文件中说明了 IntelliJ 和 JDK 的版本要求,Gradle 我们可以不必自行安装,在编译的时候会自动使用源码根目录下 gradlew 脚本进行安装。
- IntelliJ 2020.1 以上
- JDK 16
- Gradle 7.1
配置 JDK 环境
这里推荐使用 sdkman 来管理不同的 JDK 版本,sdkman 是一个用于管理多个软件开发工具包并行版本的工具,它提供了一个方便的命令行界面 (CLI) 和 API,用于列出、安装、切换、删除软件版本。
sdkman 对 Java 开发人员特别有用,支持 JVM 的 SDK,例如 Java,Groovy,Scala,Kotlin,Gradle,Maven,Spring Boot 和许多其他工具。sdkman 支持所有主要的 Unix 操作系统,可以安装在 macOS,Linux,WSL,Cygwin,Solaris,FreeBSD 等系统上,并且支持 bash 和 zsh。
你也可以按照常规的方式安装 Java,只要保证 JDK 是 16 版本即可。
安装 sdkman
执行以下命令安装 sdkman:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
查看 sdk 版本:
❯ sdk version
==== BROADCAST =================================================================
* 2021-09-16: leiningen 2.9.7 available on SDKMAN!
* 2021-09-11: grails 5.0.0-RC3 available on SDKMAN!
* 2021-09-07: mvnd 0.6.0 available on SDKMAN! https://git.io/Jucy6
================================================================================
SDKMAN 5.12.4
安装 JDK
查看支持的 Java 版本:
Available Java Versions
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 17.0.0.35.2 | amzn | | 17.0.0.35.2-amzn
| | 17.0.0.35.1 | amzn | | 17.0.0.35.1-amzn
| | 16.0.2.7.1 | amzn | | 16.0.2.7.1-amzn
| | 11.0.12.7.2 | amzn | | 11.0.12.7.2-amzn
| | 8.302.08.1 | amzn | | 8.302.08.1-amzn
GraalVM | | 21.2.0.r16 | grl | | 21.2.0.r16-grl
| | 21.2.0.r11 | grl | | 21.2.0.r11-grl
| | 20.3.3.r11 | grl | | 20.3.3.r11-grl
| | 19.3.6.r11 | grl | | 19.3.6.r11-grl
Java.net | | 18.ea.15 | open | | 18.ea.15-open
| | 18.ea.2.lm | open | | 18.ea.2.lm-open
| | 17 | open | | 17-open
| | 17.ea.3.pma | open | | 17.ea.3.pma-open
| | 16.0.2 | open | | 16.0.2-open
| | 11.0.2 | open | | 11.0.2-open
Liberica | | 17.0.0.fx | librca | | 17.0.0.fx-librca
| | 17.0.0 | librca | | 17.0.0-librca
| | 16.0.2.fx | librca | | 16.0.2.fx-librca
| | 16.0.2 | librca | | 16.0.2-librca
| | 11.0.12.fx | librca | | 11.0.12.fx-librca
| | 11.0.12 | librca | | 11.0.12-librca
| | 8.0.302.fx | librca | | 8.0.302.fx-librca
| | 8.0.302 | librca | | 8.0.302-librca
Liberica NIK | | 21.2 | nik | | 21.2-nik
Microsoft | | 16.0.2.7.1 | ms | | 16.0.2.7.1-ms
| | 11.0.12.7.1 | ms | | 11.0.12.7.1-ms
SapMachine | | 17 | sapmchn | | 17-sapmchn
| | 16.0.2 | sapmchn | | 16.0.2-sapmchn
| | 11.0.12 | sapmchn | | 11.0.12-sapmchn
Semeru | | 16.0.2 | sem | | 16.0.2-sem
| | 11.0.12 | sem | | 11.0.12-sem
| | 8.0.302 | sem | | 8.0.302-sem
Temurin | | 16.0.2 | tem | | 16.0.2-tem
| | 11.0.12 | tem | | 11.0.12-tem
| | 8.0.302 | tem | | 8.0.302-tem
Trava | | 11.0.9 | trava | | 11.0.9-trava
| | 8.0.232 | trava | | 8.0.232-trava
Zulu | | 17.0.0 | zulu | | 17.0.0-zulu
| | 17.0.0.fx | zulu | | 17.0.0.fx-zulu
| | 16.0.2 | zulu | | 16.0.2-zulu
| | 16.0.2.fx | zulu | | 16.0.2.fx-zulu
| | 11.0.12 | zulu | | 11.0.12-zulu
| | 11.0.12.fx | zulu | | 11.0.12.fx-zulu
| | 8.0.302 | zulu | | 8.0.302-zulu
| | 8.0.302.fx | zulu | | 8.0.302.fx-zulu
| | 7.0.312 | zulu | | 7.0.312-zulu
================================================================================
Use the Identifier for installation:
$ sdk install java 11.0.3.hs-adpt
安装 OpenJDK 16 版本:
sdk install java 16.0.2-open
查看当前 Java 版本:
#查看 sdkman 管理的版本
❯ sdk current
Using:
java: 16.0.2-open
#查看当前 java 版本
❯ java -version
openjdk version "16.0.2" 2021-07-20
OpenJDK Runtime Environment (build 16.0.2+7-67)
OpenJDK 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)
关于 sdkman 的管理命令可以参考 sdkman usage。
源码导入 IntelliJ Idea
打开 IntelliJ Idea,点击 Open or Import。
mkdir -p /Users/chengzhiwei/data/elasticsearch/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.1-darwin-x86_64.tar.gz
tar -xzvf elasticsearch-7.14.1-darwin-x86_64.tar.gz -C /Users/chengzhiwei/data/elasticsearch
#创建数据存放目录
mkdir /Users/chengzhiwei/data/elasticsearch/elasticsearch-7.14.1/data
点击右上角 Edit Configurations,创建一个 Application 启动配置。
#上面 Elasticsearch 发行版的路径
-Des.path.home=/Users/chengzhiwei/data/elasticsearch/elasticsearch-7.14.1
-Des.path.conf=/Users/chengzhiwei/data/elasticsearch/elasticsearch-7.14.1/config
#安全策略
-Djava.security.policy=/Users/chengzhiwei/data/elasticsearch/elasticsearch-7.14.1/config/elasticsearch.policy
-Dlog4j2.disable.jmx=true
-Xmx2g
-Xms2g
- Use classpath of module:选择启动类所在 module。
- JRE:选择安装的 JDK 16。
Elasticsearch 源码学习(1)源码编译调试 Elasticsearch 源码学习(1)源码编译调试 Elasticsearch 源码学习(1)源码编译调试
grant {
permission javax.management.MBeanTruxtPermission "register";
permission javax.management.MBeanServerPermission "createMBeanServer";
permission java.lang.RuntimePermission "createClassLoader";
permission java.lang.RuntimePermission "getClassLoader";
permission java.lang.RuntimePermission "setContextClassLoader";
permission org.elasticsearch.ThreadPermission "modifyArbitraryThreadGroup";
};
点击启动。
- [idea运行es7.13.2报Unknown codebases异常] (https://elasticsearch.cn/question/11513)
- [ElasticSearch-7.8.0 源码编译调试 (详细)] (https://zhuanlan.zhihu.com/p/188725714)
- [讲得最明白的Elasticsearch源码调试环境搭建教程] (https://cloud.tencent.com/developer/article/1683325)
- [IntelliJ IDEA远程调试Elasticsearch6.1.2] (https://blog.csdn.net/boling_cavalry/article/details/89417650)