Ошибка XMPPConnection в Android

#android #xmpp

#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
  

Я понятия не имею, почему возникает эта ошибка.
Кто-нибудь может мне помочь?

Ответ №1:

Конфигурация подключения = новая конфигурация подключения («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

Ответ №2:

Я получил эту ошибку после того, как обновил плагин Android для eclipse, а также инструменты Android SDK / platform-tools (мой проект отлично работал до обновления).

Чтобы исправить, я зашел в Свойства -> Путь сборки Java -> вкладка Порядок и экспорт. Я установил флажок рядом с используемым мной файлом asmack jar (тот, что от BEEM). Затем я переместил его в начало. Изначально это не сработало бы, если бы не было вверху, поэтому обязательно попробуйте это.

Ответ №3:

Похоже, что вы используете Ignite Smack API. Оригинальный Smack API предназначен для использования на рабочем столе и использует Java Naming and Directory Interface (JNDI), который используется для LDAP и других материалов, связанных с каталогами. JNDI не включен в Android, т. е. пакет javax.naming не существует. Существует порт Android под названием asmack, который будет работать для вас. Вам просто нужно заменить Smack jar на asmack’s jar.

Вы можете найти asmack здесь:https://github.com/flowdalic/asmack