老版的zk是通过ant进行编译的,但最新的zk源码中已经没了
build.xml
,而多了
pom.xml
,也就是说构建方式由原先的Ant变成了Maven,源码下下来后,直接编译、运行是跑不起来的,有一些配置需要调整,这边做下总结。
导入项目类型
导入类型是
Maven
,不要再选
Eclipse
了。
点击IDEA最右侧的“Maven”,点击第二个小图标:“Generate Sources and Update Folders For All Projects”。
修改jre
打开项目结构(⌘ + ;),指定jdk为
1.8
。
修改gitignore文件
由于开发环境需要进行调试,临时配置文件是不需要进代码仓库的,所以进行排除。
# Ignore debug conf
conf/zoo.cfg
conf/zoo*.cfg
zookeeper-server/src/main/resources/log4j.properties
拷贝配置文件
拷贝zoo_sample.cfg
文件至相同文件夹下,名为:zoo.cfg
,配置全部使用默认;
创建/tmp/zookeeper
目录,用于存放zk数据;
拷贝log4j.properties
文件至:zookeeper-server/src/main/resources
,文件名还是log4j.properties
不变;
打开项目结构,将resources
目录标记为Resources
类型(不配置的话日志配置不生效);
增加运行启动项
配置启动项:
QuorumPeerMain
org.apache.zookeeper.server.quorum.QuorumPeerMain
conf/zoo.cfg
创建Info文件,路径:src/main/java/org/apache/zookeeper/version/Info.java
public interface Info {
public static final int MAJOR=3;
public static final int MINOR=4;
public static final int MICRO=6;
public static final String QUALIFIER=null;
public static final int REVISION=-1;
public static final String REVISION_HASH = "1";
public static final String BUILD_DATE="12/25/2019 09:55 GMT";
修改pom.xml
默认的pom.xml
有问题,直接编译多少都会报找不到类的错,需要手工调整:
java.lang.ClassNotFoundException: com.codahale.metrics.Reservoir
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>3.1.0</version>
</dependency>
java.lang.ClassNotFoundException: org.xerial.snappy.SnappyInputStream
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.1.7.3</version>
</dependency>
java.lang.ClassNotFoundException: org.eclipse.jetty.server.HttpConfiguration$Customizer
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
</dependency>
java.lang.ClassNotFoundException: org.eclipse.jetty.servlet.ServletContextHandler
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
</dependency>
java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
</dependency>
int MICRO=0;
String QUALIFIER="SNAPSHOT";
String REVISION_HASH="c50c132a7d7da7c5e68ed195b3290c7cc96cfc4d";
String BUILD_DATE="04/04/2020 14:30 GMT";
如果之前手工创建了Info日志,IDE则会提示Info
文件重复,需要把之前手工创建的删除。
Console又不显示日志了
原因未知,但试了下,把log4j.properties
文件挪到zookeeper-server/src/main/java
目录下,再挪回zookeeper-server/src/main/resources
目录下,重新运行就恢复了。