使用netstat -lntp来看看有侦听在网络某端口的进程。当然,也可以使用 lsof。

跳过jarHell检查

Elasticsearch | 作者 LianChuang | 发布于2018年07月31日 | 阅读数:2350

嵌入式节点启动ES时总是报jarHell异常,怎么在启动时跳过jar包检测而不出现jarHell异常
已邀请:

大慈大悲掌 - 要我一直笑吗?https://www.jianshu.com/u/bfa06856a726

赞同来自:


直接修改源代码
这里有个问题,第三方依赖包在工程中是以jar包->class文件存在的,是只读(read-only)文件,我们可以通过反编译或者像IDEA一样可以直接去maven仓库下载源代码,通过ctrl+鼠标左键来阅读源代码,但是无法修改。这里有两个方法

在工程目录下建立和要修改的类同包名类名的文件,然后将其源代码拷贝过来,编译后拿class文件替换掉jar包内的class文件。
在工程目录下建立和要修改的类同包名类名的文件,然后将其源代码拷贝过来,然后就可以直接编译使用,工程内的class文件在classloader中的优先级是比第三方jar包来得高的。这个方法要注意一件事,es的源代码是有做jar包冲突检验的,如果像刚才说的这么做会报jar hell!。所以要先做注释掉检查包冲突的代码,具体代码在org.elasticsearch.bootstrap.JarHell中,注释掉154行开始的public static void checkJarHell(URL urls[]) throws Exception这个方法即可。


 
我自己也遇到过这个问题。我是这么解决的,这是我总结的博客elasticsearch2.3.5深度修改源代码获取dismax每个字段的得分

LianChuang

赞同来自:

好的,非常感谢!我研究研究试试。

要回复问题请先登录注册