idea用maven启动zookeeper源码
Posted 墨_浅-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idea用maven启动zookeeper源码相关的知识,希望对你有一定的参考价值。
在执行官网的java例子的时候,发现根本无法启动,后来发现是我的zookeeper就没编译好?试一下
idea编译启动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源码的主要内容,如果未能解决你的问题,请参考以下文章