近段时间做了kafka相关的项目,项目概述:部署zookeeper+kafka+sasl集群,开发中心管理平台做kafka管理和监控,封装客户端jar包提供更为简洁的生产消息、消费消息的接口。
做完这些开发之后又考虑封装好的客户端jar包是否支持android开发,于是做了测试。
在android studio中创建了简单android项目,并将封装好的客户端jar导入,页面添加一个按钮,按钮作用:调用jar包中生产者接口,创建一个生产者向kafka生产一条消息。
运行结果:
报错java.lang.NoClassDefFoundError: Failed resolution of: Ljava/lang/management/ManagementFactory;
发现了问题就一番查找。
看上去是因为kafka并不支持android环境。于是与kafka官网进行邮件沟通。
我发送的邮件:
官网的回复邮件:
Android调用kafka的api时报错:java.lang.NoClassDefFoundError: Failed resolution of: Ljava/lang/management/ManagementFactory;
而java/lang/management/ManagementFactory 在rt.jar中,把rt.jar导入的android项目libs中报提示缺少libmanagement.so。
java.lang.management用于管理和监视Java VM,android的Dalvik VM不是Java VM,所以不支持。