zookeeper中文路径配置

如果你非要使用中文目录的话,这里有一个比较简单的方式。

因为zookeeper的配置文件是zoo.cfg,我们需要了解都有哪几个地方使用到了这个文件。

第一步

java程序中,在启动zk的时候,会加载配置文件。zookeeper使用的是Properties加载的,源码见下图

Properties文件默认的文本编码是unicode,Java程序读取的时候会自动将unicode转为本地编码(一般在程序中都是UTF-8)。

所以需要我们在zoo.cfg中写入unicode编码的中文。

比如zk的安装目录是, /media/zhangxue/工作空间/java/zookeeper-3.4.9

我想要将dataDir配置在/media/zhangxue/工作空间/java/zookeeper-3.4.9/zookeeper

我们在eclipse创建一个properties文件,我们把中文复制进去,eclipse自动帮我们转为 \u5DE5\u4F5C\u7A7A\u95F4

所以dataDir的配置如下。

dataDir=/media/zhangxue/\u5DE5\u4F5C\u7A7A\u95F4/java/zookeeper-3.4.9/zookeeper

这个操作保证的Java程序能正常的调用到配置文件,初始化zk。但是这还不能保证zk能正常启动。

第二步

在zk启动时,会校验目录是否存在(命令在zkServer.sh中)。

这个地方使用shell进行操作,shell进行编码比较麻烦。所以我在zoo.cfg中增加了一个配置

dataDirChinese=/media/zhangxue/工作空间/java/zookeeper-3.4.9/zookeeper

之后修改zkServer.sh中的dataDir为dataDirChinese。这样就保证执行shell脚本的时候能正常操作目录了。其他的中文路径配置同上。

第三步

我们需要验证我们修改的是否成功,在/zookeeper/bin目录下 执行命令: ./zkServer.sh start 显示启动

执行命令: ./zkCli.sh -server 127.0.0.1:2181 登录zk客户端

继续执行下面的命令

OK,结束

总结

还是zk官方太作,一套操作即可完成的工作,使用了两套方式去做,官方也不给解决方案,只能自己想办法弄了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180804G1MN5V00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券