在Ubuntu20.04下编译zookeeper时,发现如下错误:
... Duplicate cpuset controllers detected. ... Picking /sys/fs/cgroup/cpuset ...
此错误是一个警告,,正常来说不应该引起编译失败,但因为zookeeper将javacc的输出作为了META-INF/MANIFEST.MF里面的version_info,导致这堆警告也被打入到MANIFEST.MF里面,这样jar包的检测机制认为这个jar包是有问题的。
解决方案有几种:
1,放宽jar包的检测机制:看上去后面运行这个jar包都会带着这个信息;
2,解决这个警告信息:看上去靠谱一些。
发现从代码层解决,需要升级新的openjdk,当前这个版本openjdk对容器化的"支持"不是很好,于是只能改日志等级,但我不想改变现在的代码和配置,采用如下命令行设置即可:
export JAVA_HOME=/usr/lib/jvm/java
export ANT_HOME=/usr/share/ant
export PATH=${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}
export JAVA_TOOL_OPTIONS="-Xlog:disable -Xlog:all=warning:stderr:uptime,level,tags"
整个过程虽然有一些曲折,但最终解决了问题。