idea 本地啓動 zookeeper

 

 

從github download zookeeper 源碼, 地址here

本文章使用過程皆使用maven作爲管理項目依賴工具。

使用idea 打開zookeeper項目下的pom.xml文件,作爲project打開。

加載完索引后,設置項目模塊setting,jdk使用的是1.8,設置完成后,reimport依賴。

準備javacc工具,關於javacc,具體請訪問javacc 官網。根據Download & Installation指引按照,配置好系統環境變量。

打開zookeeper-jute模塊下的org.apache.jute.compiler.generated.Rcc.jj,該文件為javacc文件

直接在idea運行,或者在cmd命令窗口(運行命令與java編譯命令類似)下編譯運行,以此生成後續轉換jute文件需要的java文件。

之後運行org.apache.jute.compiler.generated.Rcc.java,在運行參數設置zookeeper-jute文件(相對路徑為zookeeper\zookeeper-jute\src\main\resources\zookeeper.jute)

idea 本地啓動 zookeeper

 

zookeeper-jute文件為zookeeper client與server傳輸序列化與反序列化使用。運行該文件后,會生成用於傳輸的java文件,位於項目根路徑(也就是zookeeper目錄下)。之後通過編譯zookeeper-jute,將在target/classes目錄下生成對應的java文件。

idea 本地啓動 zookeeper

 

之後複製zookeeper/conf目錄下的zoo.sample.cfg和log4j.properties到zookeeper-server/target/

idea 本地啓動 zookeeper 

最後通過configuration運行配置,運行主類為org.apache.zookeeper.server.quorum.QuorumPeerMain,配置運行參數,將zoo.cfg配置文件作爲參數傳入運行主類,modify options添加依賴,將provided scope的依賴也包括在内,最後運行,在idea啓動zookeeper server端

idea 本地啓動 zookeeper

 

總結:

中間過程遇到不少報錯

1.download項目並導入后,項目很多地方都是報紅,ide編譯不通過,根據項目文件描述並原本zookeeper打好的包發現,zookeeper用於傳輸的Java文件都不存在,看了zookeeper-jute項目的package.html文件,瞭解到zookeeper使用jute工具生成傳輸的文件。最後根據這些蛛絲馬跡找到了javacc,並最終生成了jute對應的文件。

2.log4j未配置,看著源碼,最後發現classLoader沒有找到log4j.properties,classLoader找的路徑在target目錄下,不知道爲什麽,在resource下的文件除了log4j,其他文件都複製過去了。by the way,zookeeper使用log4j。

3.啓動的時候,報了NoClassDefFoundError,具體是com/codahale/metrics/Reservoir這個類沒找到,但實際在ide上是可以打開的,最後根據這個issues最後一個commen得到提示,之前試過很多,將pom.xml的scope修改,但是都沒有用,其實就是運行時,對應的jar沒有加載到,點是想到了,但是沒有想到在運行配置裏面添加。

最後,這個字體使用的繁體,可能看起來有點異樣,原因是這麽搞完很晚了,突然心血來潮,要記錄下來,用微軟輸入法,按了幾下,看著打出來的是繁體,但是也無所謂了,都是中文,沒有閲讀障礙就好。

 

上一篇:一文搞懂zookeeper选主流程


下一篇:zookeeper08-ZooKeeper的重配置