试验环境:
solr5.3(和线上保持一致,历史功能,所以版本比较旧)
jdk1.8
idea2018版
ant1.9版本
solr源码地址:http://archive.apache.org/dist/lucene/solr/ ,记得下载源码
solr-5.3.1-src.tgz
因为源码默认结构试验的ant,所以需要先安装ant1.9,http://ant.apache.org/bindownload.cgi
配置ant的环境变量,同java,因为环境比较基础对于开发人员应该比较简单,所以不过多记录了
源码目录结构:
第一步:项目转为idea结构
cd 到 solr的根目录,执行以下命令
ant ivy-bootstrap //安装ivy
cd solr
ant server
cd ..
ant idea
说明:ant类似maven,有时候网络不好会卡住或者失败,重新执行就好了,这一步死活过不去的话,可以百度一下,我是2次成功的
然后idea,打开根目录(删除本分,为其它测试引入,请忽略)
第二步:debug模式启动solr(强烈建议,通过 根目录/solr/bin 中的 solr --help 看一下都支持什么)
cd solr/bin
solr -f -a "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18984" -port 8984
说明:address 为debug 调试接口 ,-port 为solr的访问接口
这时候访问solr,http://localhost:8984/solr,需要添加Core,会的跳过,不会的百度...很简单或者用我下面吐槽的办法
注意:这里可能会报错,根据错误提示创建文件(从demo里面copy),只是测试的话可以参考吐槽部分
以下部分纯属吐槽(记录自己的一次测试,和主流程无关),经验丰富,可以跳过
-------------------------------------------------------------------------------------------
上面主流程没有core,需要新建,可能会遇到一些问题,可以根据提示解决,后来为了测试solr的一些命令做了一个小测试
因为我只是做实验所以导入了一份测试数据 通过solr -f -e dih ,会生成一些测试数据
这时候可以关闭solr了,因为这次操作是为了生存测试core,这里被坑了一次 -e dih 无法开启调试模式(也许是自己测试问题)
solr stop -p 8984
这时候测试 core已经有了,再开启debug 模式,这时候会用到上面命令提示的-s 的路径
solr -f -a "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18984" -port 8984 -s "E:\idea_workspace\solr-5.3.1\solr\example\example-DIH\solr"
吐槽结束,回归正途
------------------------------------------------------------------------------------
第三步:通过idea 进行remote debug
说明:远程调试,握手失败
Error running Debugger: Unable to open debugger port (localhost:8983): java.io.IOException "handshake failed - connection prematurally closed"
原因:1.防火墙关闭(没测) 2.检查你的solr 命令中的参数,主要a 后面那部分,有些网上的资料也的不太准确,你记得自己 solr --help 看下例子
成功的截图:
第四步:前面都成功的话,开始任意的打断点,撸代码吧
成功进入断点
致此完成,还有问题欢迎加群讨论学习
qq群:208779755
附学习:solr 常用命令参数截图