前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在intellij idea中调试elasticsearch源代码

如何在intellij idea中调试elasticsearch源代码

原创
作者头像
用户1233856
修改2022-08-06 15:51:47
2.2K0
修改2022-08-06 15:51:47
举报
文章被收录于专栏:白码晚股白码晚股

准备

本文以Elasticsearch 6.6 为例,介绍使用IDEA调试Elasticsearch源码的方法。

使用到的工具和版本如下:

组件

版本

jdk

corretto-11.0.16

gradle

5.6.4

groovy

4.0.4

IntelliJ IDEA

2022.1

IDEA选择

对比:分别试过IntelliJ IDEA 2018.2.4和Visual Studio Code遇到一些障碍最后还是在IntelliJ IDEA 2022.1顺利通过。IntelliJ IDEA 2018.2.4直接崩溃闪退。vscode有两个问题,代码debug和groovy暂时放弃。

辅助:能自动下载jdk,帮助选择openjdk版本和提供下载地址。

下载jdk
下载jdk

jdk选择和下载

jdk版本参考

gradle和jdk兼容性矩阵

兼容性矩阵

Java version

First Gradle version to support it

8

2.0

9

4.3

10

4.7

11

5.0

12

5.4

13

6.0

14

6.3

15

6.7

16

7.0

17

7.3

18

7.5

gradle下载和安装

用户主目录不用设置在系统盘下

distributionBase=GRADLE_USER_HOME

全局变量:GRADLE_USER_HOME设置成非系统盘

groovy选择

Gradle is tested with Groovy 1.5.8 through 4.0.0.Gradle plugins written in Groovy must use Groovy 3.x for compatibility with Gradle and Groovy DSL build scripts.

下载Elasticsearch源码

新建项目
新建项目

代码地址:https://github.com/elastic/elasticsearch.git

选择路径
选择路径
下载中
下载中
选择分支
选择分支

选择分支:6.6

编译

./gradlew assemble
./gradlew assemble

运行

./gradlew run --debug-jvm
./gradlew run --debug-jvm

验证

在浏览器中验证
在浏览器中验证

遇到问题和解决

  • jdk版本问题
代码语言:shell
复制
Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the User Manual chapter on the daemon at
  • gradle版本问题
代码语言:shell
复制
Cause: startup failed:
settings file 'E:\workspace\es\elasticsearch\settings.gradle': 1: unable to resolve class org.elasticsearch.gradle.Version
@ line 1, column 1.
import org.elasticsearch.gradle.Version
^
1 error
  • groovy版本问题
代码语言:shell
复制
I am getting this exception?java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7  and java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache) when i run the spring
  • idea 闪崩问题 看日志没有什么发现,只好升级版本
  • resource 访问 "Connect to artifacts.elastic.co:443"
代码语言:java
复制
   // 这个资源443:
  compile "com.amazonaws:aws-java-sdk-s3:${versions.aws}"
  compile "com.amazonaws:aws-java-sdk-kms:${versions.aws}"
  compile "com.amazonaws:aws-java-sdk-core:${versions.aws}"
代码语言:shell
复制
Could not resolve all task dependencies for configuration ':plugins:repository-s3:runtime'.
Could not resolve com.amazonaws:aws-java-sdk-s3:1.11.406.
Required by:
project :plugins:repository-s3
Could not resolve com.amazonaws:aws-java-sdk-s3:1.11.406.
Could not get resource 'https://artifacts.elastic.co/maven/com/amazonaws/aws-java-sdk-s3/1.11.406/aws-java-sdk-s3-1.11.406.pom'.
Could not GET 'https://artifacts.elastic.co/maven/com/amazonaws/aws-java-sdk-s3/1.11.406/aws-java-sdk-s3-1.11.406.pom'.
Connect to artifacts.elastic.co:443 [artifacts.elastic.co/34.120.127.130] failed: Connection timed out: connect
Could not resolve com.amazonaws:aws-java-sdk-s3:1.11.406.
Could not get resource 'https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-s3/1.11.406/aws-java-sdk-s3-1.11.406.pom'.
Could not GET 'https://jcenter.bintray.com/com/amazonaws/aws-java-sdk-s3/1.11.406/aws-java-sdk-s3-1.11.406.pom'.

配置国内云仓库

代码语言:java
复制
 //  settings.gradle
buildscript {
  repositories {
    //对应google()
    maven {url 'https://maven.***.com/repository/google'}
    //对应jcenter()
    maven {url 'https://maven.***.com/repository/jcenter'}
    //公共库
    maven {url 'https://maven.***.com/repository/public'}

  }
}
  • gradle三方包占用系统盘问题

总结

按照上述步骤就跑起来,可以规避我踩过坑。如果文中有没阐述清楚,欢迎在评论区留言。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备
    • IDEA选择
      • jdk选择和下载
        • gradle和jdk兼容性矩阵
          • 兼容性矩阵
          • gradle下载和安装
          • 用户主目录不用设置在系统盘下
        • groovy选择
        • 下载Elasticsearch源码
        • 编译
        • 运行
        • 验证
        • 遇到问题和解决
        • 总结
        相关产品与服务
        Elasticsearch Service
        腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档