#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