在執行官網的java例子的時候,發現根本無法啟動,后來發現是我的zookeeper就沒編譯好?試一下
idea編譯啟動zookeeper原始碼
- 修改組態檔
- 1 zoo.cfg
- 2 log4j.properties
- 3 將檔案夾標記為Resources Root
- 增加啟動項
- 1 QuorumPeerMain
- 注釋掉pom.xml的scope
- 啟動服務端
- 啟動客戶端
修改組態檔
類似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


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293307.html
標籤:其他
上一篇:OpenCV-Python教程:形態學變換~腐蝕和膨脹(erode,dilate)
下一篇:kafka的安裝與使用
