Android中的XMPPConnection错误

时间:2011-04-12 09:43:46

标签: android xmpp

我使用此链接中的相同代码Google chat

但是我得到了以下错误。

04-12 09:13:55.903: ERROR/AndroidRuntime(362): FATAL EXCEPTION: Thread-8
04-12 09:13:55.903: ERROR/AndroidRuntime(362): java.lang.ExceptionInInitializerError
04-12 09:13:55.903: ERROR/AndroidRuntime(362):     at org.jivesoftware.smack.ConnectionConfiguration.<init>(ConnectionConfiguration.java:99)
04-12 09:13:55.903: ERROR/AndroidRuntime(362):     at org.jivesoftware.smack.XMPPConnection.<init>(XMPPConnection.java:131)
04-12 09:13:55.903: ERROR/AndroidRuntime(362):     at com.ex.HelloFormStuffActivity.HelloFormStuffActivity$1.run(HelloFormStuffActivity.java:38)
04-12 09:13:55.903: ERROR/AndroidRuntime(362):     at java.lang.Thread.run(Thread.java:1096)
04-12 09:13:55.903: ERROR/AndroidRuntime(362): Caused by: java.lang.NoClassDefFoundError: javax.naming.directory.InitialDirContext
04-12 09:13:55.903: ERROR/AndroidRuntime(362):     at org.jivesoftware.smack.util.DNSUtil.<clinit>(DNSUtil.java:50)
04-12 09:13:55.903: ERROR/AndroidRuntime(362):     ... 4 more

我不知道为什么会出现这个错误。 任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:5)

ConnectionConfiguration config = new ConnectionConfiguration(“chat.facebook.com”,5222,“chat.facebook.com”);

        XMPPConnection myConn = new XMPPConnection(config);
        config.setSASLAuthenticationEnabled(true);
       config.setDebuggerEnabled(true);

        try{
      myConn.connect();
//username is  no @chat.facebook.com
myConn.login("rajeshXXXXX","XXXXXXX" );




        }
        catch (Exception e) {
            System.out.println(e.toString());
        }

//最终我的工作正常,请使用asmack-2010.05.07.jar GIT中://gist.github.com/925250.git

答案 1 :(得分:2)

好像你正在使用Ignite的Smack API。最初的Smack API用于桌面使用,并使用用于LDAP和其他与目录相关的东西的Java命名和目录接口(JNDI)。 JNDI不包含在Android中,即包javax.naming不存在。有一个名为asmack的Android端口可供您使用。你只需要用asmack的jar替换Smack jar。

您可以在此处找到asmack:https://github.com/flowdalic/asmack

答案 2 :(得分:2)

我更新了eclipse的android插件以及android SDK工具/平台工具后我得到了这个错误(我的项目在我更新之前工作正常)。

要修复我去了属性 - &gt; Java构建路径 - &gt;订单和导出选项卡。我选中了我正在使用的asmack jar旁边的框(来自BEEM的那个)。然后我把它移到了顶部。最初它不会起作用,除非它在顶部,所以一定要试试。