最近我们升级到了elastic 5.0。elastic 5.0中的java客户机对log4j 2.6有一个硬依赖。另一方面,storm server(版本1.0.2)使用旧版本的log4j,两者都是硬连接的依赖关系。下面是我们在尝试部署到服务器时遇到的错误,我可以看到“prebuilttransportclient”无法示例化。
java.lang.nosuchmethoderror:org.apache.logging.log4j.logger.info(ljava/lang/string;ljava/lang/object;)v
我已经向elastic提出了这个问题,他们已经承认了这个问题,并提到他们正在开发一个真正的客户机,它的依赖性较小。
有什么解决方法或建议暂时绕过这个问题吗?
1条答案
按热度按时间lrl1mhuk1#
我找到了一个解决办法,现在它正在工作。我就是这么做的,
storm使用python脚本从/lib下的指定文件夹加载log4j文件。storm的最新版本使用log4j2.1
我把log4j 2.6.2文件复制到那个文件夹中。
现在,当我部署Topology时,storm开始在类路径中使用log4j2.6.2。
弹性客户端得到了它所需要的,它开始工作。
在轻量级弹性客户端发布之前,我们将继续使用此解决方案。