问题描述
- Smack4.1 android 找不到包异常(NoClassDefFoundError)
-
想使用最新的Smack4.1.0 在我的项目当中,就先搞一个单独的,希望能跑起来。结果就是简单的都弄不起来。导入所有包后,可以编译通过。
但是一使用到它的包,就抛个异常给我。整了半天也没弄明白是包的原因还是哪配置的问题。
在网上找到这个资料:https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide
也不会弄,又是phython又是maven又是Ant的,英语也不好,不知道怎么弄。
有用过的大神能使用的吗?求源码!!!这是我的代码,就是按官方介绍打出来的: public void onClick(View v){ new Thread(new Runnable() { @Override public void run() { try { XMPPTCPConnection connection = getConnection(); connection.connect(); connection.login("anytime_eeeeee","qq123456","ubuntu"); } catch (SmackException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XMPPException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }).start(); } private XMPPTCPConnection getConnection(){ XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder(); builder.setServiceName("ubuntu"); builder.setHost("58.64.162.184"); builder.setPort(5222); builder.setCompressionEnabled(false); builder.setDebuggerEnabled(false); builder.setSendPresence(true); builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled); XMPPTCPConnection connection = new XMPPTCPConnection(builder.build()); return connection; }
解决方案
重新建了个工程,导入了相应的包,在官网的论坛上找到了一个例子,按着例子做就可以运行并跑起来了。
https://community.igniterealtime.org/thread/55618,当然这个是有问题的,他没有使用到server name
我把我的代码放上来,希望新来的学员不要被这恶心的搭环境被搞怕了。
代码地址:http://download.csdn.net/detail/ysn003/8786987
解决方案二:
肯定是依赖路径的问题。看看order an export 有没有把smack的包导出。另外可以反编译 apk,看看 反编译后 到底有没有 那个类。
再看看 混淆问题。
解决方案三:
是否在gradle里使用了混淆??????
解决方案四:
你用的IDE是ADT还是Android Studio?这个就是没有找到相关的类,还是导入的包有问题。
解决方案五:
找不到包异常(NoClassDefFoundError) Didn't find class "org.jivesoftw"你可以上网查一下包含这个类的包
解决方案六:
android客户端一般使用asmack,你可以换成这个jar试试。
解决方案七:
终于找到真正原因了!
因为之前弄的是测试项目,所以又把所有的smack jar 包制作成 library.结果问题再次出现,
解决方法是:
右键你的项目->Build path ->Configure Build path ->Order and Export
把你制作 的User library 勾选上即可!
图片说明
其实那个勾选不选上到底是什么原理,搞不懂,有哪位懂的分享一下,谢谢
解决方案八:
看看order an export 有没有把smack的包导出
解决方案九:
export and order 勾选上,意思就是 导出apk的时候,一起打包到apk中