zoukankan      html  css  js  c++  java
  • elasticsearch local debug环境搭建

    最近计划看看elasticsearch的源码,首先得把local debug环境搞定。

    下载源码。因为公司产线是5.6.5,所以就下载了5.6.5的代码。

    源码编译。先进入到/elasticsearch/core目录,因为IDE是idea,所以用gradle idea编译core目录。然后进入到/elasticsearch目录,在运行gradle idea命令。gradle版本要3.5以上,我用的是4.4.1。

    导入IDE。import project(选择elasticsearch根目录) -> import project from external model(选Gradle)->next(gradle JVM选1.8)->finish.

    idea会持续load一段时间,主要是加载gradle的依赖包。完全打开后:

    配置启动脚本。Run/Debug Configuration -> Add Application.

    vm options:

    下载elasticsearch 5.6.5的发行版的zip包,解压缩,目录重命名为elasticsearchdistribution,copy到/elasticsearch/distribution/目录下。目的是为了local debug的时候,能直接使用发行版本中的lib。

    然后就可以debug了。不过要想elasticsearch正常启动起来,可能还是会遇到一些问题,本人主要遇到了三个问题:

    1.检查重复的jar包(jar hell)。存在重复的jar冲突,我的做法是重命名JDK中重复的jar.

    2.java安全策略问题:access denied ("javax.management.MBeanTrustPermission" "register")。

    创建一个elasticsearch.policy文件,内容:

    grant{
    permission javax.management.MBeanTruxtPermission "register";
    permission javax.management.MBeanServerPermission "createMBeanServer";
    };

    通过配置vm options的第三行生效。

    3.distribution包中jar的版本问题。首先是出现一个error: org.elasticsearch.bootstrap.Security类的readPolicy()方法中subString的index为-1,造成subString越界。

    通过debug可以看到遍历的是/elasticsearch/distribution/elasticsearchdistribution/modules/reindex中的jar文件,遂把该文件夹下的elasticsearch-rest-client-5.6.5.jar包名称改为elasticsearch-rest-client-5.6.5-SNAPSHOT.jar。

    最终,可以动过idea的run/debug成功启动elasticsearch。

  • 相关阅读:
    delegate
    URL、Session、Cookies、Server.Transfer、Application和跨页面传送,利弊比较
    C#中页面之间传值传参的六种方法
    Java学习之路:2、Mysql 链接与查询
    Java学习之路:1、HelloWorld
    Memcache 分布式解决方案 之 : 普通 Hash 分布
    每日一记:搭建Memcached + php 缓存系统
    四、记一次失败的 CAS 搭建 之 结果总是那么伤(客户端)
    三、记一次失败的 CAS 搭建 之 服务端配置
    二、记一次失败的 CAS 搭建 之 证书配置
  • 原文地址:https://www.cnblogs.com/zhq1007/p/8158903.html
Copyright © 2011-2022 走看看