idea用maven启动zookeeper源码

Posted 墨_浅-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idea用maven启动zookeeper源码相关的知识,希望对你有一定的参考价值。

在执行官网的java例子的时候,发现根本无法启动,后来发现是我的zookeeper就没编译好?试一下

修改配置文件

类似ZooKeeper官方文档学习笔记02-ZooKeeper入门指南这个

1 zoo.cfg

在zookeeper源码中,寻找zoo_sample.cfg。然后复制一份放在文件夹下,重命名为zoo.cfg

tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
dataDir=./tmp/data
dataLogDir=./tmp/log
clientPort=2181

2 log4j.properties

conf下的log4j.properties复制到zookeeper-server/src/main/resources

zoo.cfg貌似也要复制,不复制应该也行,这两个文件

3 将文件夹标记为Resources Root

文件夹:zookeeper-server/src/main/resources
(编译的时候按照原文件输出(其余的标记参考

增加启动项

1 QuorumPeerMain

zookeeper集群的启动入口类,也可以选择ZooKeeperServerMain应该,路径都是zookeeper-server/src/main下

vm options配置了日志位置,如果这个文件没有复制过来,用绝对 路径就可以了,con.cfg应该是同理的。
还有右上角的Allow parallel run要勾选,这样才能同时启动服务器和客户端

注释掉pom.xml的scope

目录如下图:

注释掉所有的provied,像这样:<!--<scope>provided</scope>-->。作用是可以避免出现java.lang.NoClassDefFoundError这种错误。但是有时候即使你去掉了依然会报错,需要你试试一下方法。

  • 1 build->rebuild project
  • 2 maven->clean
  • 3 maven->install
  • 4 mvn clean install -DskipTests

我试了好多次才生效,不知道具体为什么,应该是没找到最正确的地方。

如果你的启动提示log4j不存在,那就是你的Resources忘了复制log4j文件或者忘记将文件夹标记为Resources Root了。

还有个很奇怪的是,如果你复制过来,没有配置log4j第一次启动没有问题,第二次会提示没有log4j啥的。

启动服务端

首先编译一下,用命令行,右侧的maven可能会报错

mvn clean install -DskipTests

编译完成后,启动main,启动成功如图

启动客户端

org.apache.zookeeper.ZooKeeperMain

注释掉ZookeeperMain类对应的pom.xml下的这个scope

-server 127.0.1:2181


以上是关于idea用maven启动zookeeper源码的主要内容,如果未能解决你的问题,请参考以下文章

IDEA 编译 ZooKeeper 源码

手把手教你如何导入源码,zookeeper为例

Tomcat源码Idea maven启动

学会阅读别人的源码

Tomcat源码分析启动Tomcat源码

Zookeeper实战API 应用