android中使用smack库时,遇到错误:java.lang.NullPointerException

4 篇文章 0 订阅
1 篇文章 0 订阅

参考网站:

http://www.cnblogs.com/windy-love/p/3184304.html

http://stackoverflow.com/questions/5910219/getsearchform-returns-null-when-using-usersearch-in-xmpp-with-asmack

http://community.igniterealtime.org/message/201866#201866

http://blog.csdn.net/wangyi_lin/article/details/6953606


在jitsi-android中直接使用smack库中的类时,运行时会遇到java.lang.NullPointerException的错误。查阅上述网站后,猜测原因大概与之相同。

问题分析摘要:

国外网站解释,这对asmack是个全局存在的问题。原因就是通常在普通版本smack的META-INF目录下的smack.providers文件,在android中不能自动加载,因为jar包的打包方式。因此所以的providers都必须手动加载。

smack中:每个provider都会有一个静态函数,将自己注册到ProviderManager中。此注册通常是在class load时完成,但是在android中class load似乎没有正常工作,因此没有provider被注册到ProviderManager中


注意:

在Android中可以动态加载,但无法像Java中那样方便动态加载jar      

原因:Android的虚拟机(Dalvik VM)是不认识Java打出jar的byte code,需要通过dx工具来优化转换成Dalvik byte code才行。

refer to:

http://www.cnblogs.com/developerY/archive/2013/04/18/3027997.html

http://blog.csdn.net/czh0766/article/details/6736826

http://www.cnblogs.com/franksunny/archive/2011/09/27/2193085.html

http://www.cnblogs.com/over140/archive/2011/11/23/2259367.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值