java - Android smack 4.1 连接问题

标签 java android smack google-talk

我正在尝试使用 Smack 在 Android 中与 GoogleTalk 建立连接。 我已经按照互联网上的大量教程示例进行操作,但似乎仍然无法使其工作。

public static final String HOST = "talk.google.com";

public static final int PORT = 5222;
public static final String SERVICE = "gmail.com";
public static final String USERNAME = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ed809488808c8481ad8a808c8481c38e8280" rel="noreferrer noopener nofollow">[email protected]</a>";
public static final String PASSWORD = "mypassword";

我的上述凭据是正确的...

 XMPPTCPConnectionConfiguration.Builder connConfig = XMPPTCPConnectionConfiguration.builder();
   connConfig.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
   connConfig.setUsernameAndPassword(USERNAME, PASSWORD);
   connConfig.setServiceName(SERVICE);
   connConfig.setHost(HOST);
   connConfig.setPort(PORT);
   connConfig.setDebuggerEnabled(true);
   //setCompressionEnabled(false).build();
   //(HOST, PORT, SERVICE);
   XMPPTCPConnection connection = new  XMPPTCPConnection(connConfig.build());
     try {
       connection.connect();
       Log.i("XMPPChatDemoActivity",  "[SettingsDialog] Connected to "+connection.getHost());
     } catch (XMPPException ex) {
         Log.e("XMPPChatDemoActivity",  "[SettingsDialog] Failed to connect to "+ connection.getHost());
         Log.e("XMPPChatDemoActivity", ex.toString());
         setConnection(null);
     }
     catch(SmackException ex){
         Log.e("XMPPChatDemoActivity",  "[SettingsDialog] Failed to connect to "+ connection.getHost());
         Log.e("XMPPChatDemoActivity", ex.toString());
         setConnection(null);
     }
     catch(IOException ex){
         Log.e("XMPPChatDemoActivity",  "[SettingsDialog] Failed to connect to "+ connection.getHost());
         Log.e("XMPPChatDemoActivity", ex.toString());
         setConnection(null);
     }

我得到java.lang.ExceptionInInitializeError

在这条线上

XMPPTCPConnectionConfiguration.Builder connConfig = XMPPTCPConnectionConfiguration.builder();//第184行

这是完整的堆栈跟踪:

 FATAL EXCEPTION: Thread-120
java.lang.ExceptionInInitializerError
at com.example.samsungchatexample.MainActivity$4.run(MainActivity.java:184)
at java.lang.Thread.run(Thread.java:856)
Caused by: java.lang.ExceptionInInitializerError
at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96)
at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38)

Caused by: java.lang.ExceptionInInitializerError
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:217)
at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:213)
at org.jivesoftware.smack.SmackInitialization.parseClassesToLoad(SmackInitialization.java:193)
at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:163)
at org.jivesoftware.smack.SmackInitialization.processConfigFile(SmackInitialization.java:148)
at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:116)

Caused by: java.lang.NoClassDefFoundError: javax.naming.directory.InitialDirContext
at org.jivesoftware.smack.util.dns.javax.JavaxResolver.<clinit>(JavaxResolver.java:50)

有人可以帮我解决这个问题吗?我已经在 KitKatJellyBean 上进行了测试 两者都有相同的异常,因此这不是操作系统版本上下文的故障。我缺少什么?

最佳答案

我在使用 SMACK 4.1 建立连接时确实遇到问题。 当我包含下面提到的所有这些库时,我成功建立了连接。尝试一下:)希望你成功。

  1. jxmpp-core-0.4.1
  2. jxmpp-util-cache-0.4.1
  3. minidns-0.1.1
  4. smack-android-4.1.0.jar
  5. smack-android-extensions-4.1.0
  6. smack-core-4.1.0
  7. smack-extensions-4.1.0
  8. smack-im-4.1.0
  9. smack-tcp-4.1.0

关于java - Android smack 4.1 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29727997/

相关文章:

java - Tomcat 不会停止。我该如何调试呢?

可迭代对象的 Java GraphQL 解析器 : Hibernate Exception

android - -keep class 和 -dontwarn 有什么区别

android - XMPP 交货收据 XEP-0184 与 ASMACK

android - 使用 smack 在消息应用程序中实现接收者状态(已读或正在打字) - Android

android - 击打 4.1 : Exception reloading roster

java - 如何合并两个具有部分相等对象的哈希集?

Java lambda 表达式最佳实践

android - GestureDetector的onScroll()和onFling()的区别

android - 我想从 GSM 网络获取时间