其实这个异常很常见,简单说明下我出现这个异常的情况,我的代码简化如下:

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /aaaa/bb_do better myself

就是在ZK连接成功后,先随便判断了一个path存不存在,然后调用getChildren()方法。此时ZK节点情况为:

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /aaaa/bb_do better myself_02

运行结果:

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /aaaa/bb_do better myself_03

再将代码改一下:

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /aaaa/bb_do better myself_04

运行结果:

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /aaaa/bb_do better myself_05

再将代码改一下:

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /aaaa/bb_do better myself_06

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /aaaa/bb_do better myself_07

运行结果:

org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /aaaa/bb_do better myself_08

也就是说明调用getChildren()方法必须要当前path存在。