无法在android中的xmpp服务器中连接

Posted

技术标签:

【中文标题】无法在android中的xmpp服务器中连接【英文标题】:Unable to connect in xmpp server in android 【发布时间】:2014-11-06 07:08:06 【问题描述】:

我正在使用 Samck 4.1.0-alpha 库来创建 Xmpp 客户端。我已经创建了有效用户。我正在尝试通过代码发送消息。但得到错误。 代码:

new Runnable()

            @Override
            public void run() 
                // TODO Auto-generated method stub
                ConnectionConfiguration config = new ConnectionConfiguration("jabb3r.org", 5222, "jabb3r.org");
                XMPPConnection connection = new XMPPTCPConnection(config);
                try 
                    connection.connect();
                    connection.login("USERNAME", "PASSWORD");
                    // Assume we've created a XMPPConnection name "connection"._
                    ChatManager chatmanager = ChatManager.getInstanceFor(connection);
                    Chat newChat = chatmanager.createChat("neilneil@jabb3r.org", new MessageListener() 
                        public void processMessage(Chat chat, Message message) 
                            System.out.println("Received message: " + message);
                        
                    );

                    try 
                        newChat.sendMessage("Howdy!");
                    
                    catch (XMPPException e) 
                        System.out.println("Error Delivering block");
                    
//                  ConnectionException.getFailedAddresses();
                 catch (SmackException | IOException | XMPPException e) 
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                
            

        ;

我收到了这个奇怪的错误。 日志:

11-06 06:55:47.913: E/androidRuntime(1604): FATAL EXCEPTION: Thread-115
11-06 06:55:47.913:E/AndroidRuntime(1604):java.lang.NoClassDefFoundError:org.xbill.DNS.ResolverConfig
11-06 06:55:47.913: E/AndroidRuntime(1604):     at org.jivesoftware.smack.SmackAndroid$1$1.run(SmackAndroid.java:41)

我找不到调试此错误的资源。

【问题讨论】:

你在项目中添加了 Samck 库 【参考方案1】:

https://community.igniterealtime.org/thread/49329

(请务必阅读自述文件,否则将无法正常工作!)

https://github.com/Flowdalic/asmack/blob/master/README.asmack

Smack requires dnsjava for DNS SRV record lookup. You need to add the
dnsjava library to your project's libraries.

http://www.dnsjava.org/download/

【讨论】:

哦,这有点尴尬! 该自述文件适用于 aSmack。对于 Android 上的 Smack 4.1,我实际上建议使用 minidns 而不是 dnsjava。

以上是关于无法在android中的xmpp服务器中连接的主要内容,如果未能解决你的问题,请参考以下文章

无法将 Android 客户端与本地 XMPP 服务器连接

如何在android设备和xmpp服务器之间建立连接?

单独线程中的 XMPP 连接 - 仍然被 Android 操作系统关闭?

android中的XMPP连接错误

无法使用 Smack 4.1 从 Android 连接 apache vysper XMPP 服务器

无法在 windows phone 7.5(vs2010) 上使用 strophe.js 保持与 XMPP 服务器的连接