当前位置: 首页 > 知识库问答 >
问题:

从android连接到XMPP服务器

巫朝明
2023-03-14
java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/security/sasl/Sasl; 

日志:

FATAL EXCEPTION: Thread-62267
Process: com.abcd.abcd, PID: 14825
java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/security/sasl/Sasl;
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:92)
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:319)
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:203)
at com.abcd.abcd.XmppManager.login(XmppManager.java:99)
at com.abcd.abcd.Main.initializeXmppConnection(Main.java:78)
at com.abcd.abcd.Main.init(Main.java:72)
at com.abcd.abcd.Main.<init>(Main.java:61)
at com.abcd.abcd.MainActivity$1.run(MainActivity.java:32)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.ClassNotFoundException: Didn't find class "javax.security.sasl.Sasl" on path: DexPathList[[zip file "/data/app/com.abcd.abcd-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at org.jivesoftware.smack.sasl.SASLMechanism.authenticate(SASLMechanism.java:92) 
at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:319) 
at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:203) 
at com.abcd.abcd.XmppManager.login(XmppManager.java:99) 
at com.abcd.abcd.Main.initializeXmppConnection(Main.java:78) 
at com.abcd.abcd.Main.init(Main.java:72) 
at com.abcd.abcd.Main.<init>(Main.java:61) 
at com.abcd.abcd.MainActivity$1.run(MainActivity.java:32) 
at java.lang.Thread.run(Thread.java:818) 
Suppressed: java.lang.ClassNotFoundException: javax.security.sasl.Sasl
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 10 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

我被困在这里,真的不知道问题是什么。有帮手吗?

共有1个答案

强德厚
2023-03-14

嗨,如果您想为studio更新库,这是一个很好的选择,但如果您想在studio中使用相同的代码,那么您可以访问这里的代码并检查您是否做得正确。ssl权限的一些问题检查这里正确的方法

private XMPPConnection connect() throws XMPPException, SmackException,
        IOException {
    if ((this.connection != null) && (this.connection.isConnected())) {
        return this.connection;
    }

    ConnectionConfiguration config = new ConnectionConfiguration(HOST1,
            5222);
    SmackConfiguration.DEBUG_ENABLED = true;
    SASLAuthentication.supportSASLMechanism("MD5", 0);
    System.setProperty("smack.debugEnabled", "true");
    config.setCompressionEnabled(false);
    config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
    config.setReconnectionAllowed(true);
    config.setSendPresence(true);
    config.setRosterLoadedAtLogin(true);

    if (Build.VERSION.SDK_INT >= 14) {
        config.setKeystoreType("AndroidCAStore");
        config.setKeystorePath(null);
    } else {
        config.setKeystoreType("BKS");
        String str = System.getProperty("javax.net.ssl.trustStore");
        if (str == null) {
            str = System.getProperty("java.home") + File.separator + "etc"
                    + File.separator + "security" + File.separator
                    + "cacerts.bks";
        }
        config.setKeystorePath(str);
    }
    if (connection == null) {
        this.connection = new XMPPTCPConnection(config);
    }
    this.connection.connect();
    Roster roster = connection.getRoster();
    roster.addRosterListener(new RosterListener() {

        @Override
        public void presenceChanged(Presence arg0) {
            Log.d("deb", "ug");
        }

        @Override
        public void entriesUpdated(Collection<String> arg0) {
            Log.d("deb", "ug");
        }

        @Override
        public void entriesDeleted(Collection<String> arg0) {
            Log.d("deb", "ug");
        }

        @Override
        public void entriesAdded(Collection<String> arg0) {
            Log.d("deb", "ug");
        }
    });
    return this.connection;
}

谢谢

希望这对你有帮助。

 类似资料:
  • 我正在尝试编写一个非常基本的Android应用程序,它可以连接到OSC服务器并监听来自它的消息。 到目前为止,我已经基于OSCP5库和广播客户端示例制作了一个简单的应用程序,下面是我尝试的内容: 这是我得到的堆栈轨道: 我不知道该如何理解这个错误。 如何从Android手机向任何在特定端口收听OSC的人发送OSC消息?推荐的方法是什么?我对Android编程还不熟悉,试图利用我以前在处理中使用过的

  • 我编写了一个简单的java套接字服务器。我可以使用java客户端连接到它。 但是,当我尝试将android设备连接到它时,它会给出以下错误: 代码如下: 这一行:似乎是罪魁祸首。 错误消息“java.net.socketexception:套接字失败:EACCES(权限被拒绝)” Android java.net.SocketException:套接字失败:EACCES(拒绝权限) Android

  • 我需要一些帮助来理解如何编写HTTP路由器,它将HTTP标头识别为路由标准。我找到了链接https://github.com/cgbystrom/netty-tools/blob/master/src/main/java/se/cgbystrom/netty/http/router/RouterHandler.java它似乎自己做路由。但是现在不清楚,如何 连接到另一个HTTP服务器 发送HTTP

  • 我需要将一条消息从运行在SQL Server2014下的SSIS包放入Azure ServiceBus队列中。正如本文所建议的:从ssis连接到azure服务总线队列,我编写了一个引用“azure SDK2.9”的脚本任务。这种方法适用于Azure存储帐户处理Blob(引用Microsoft.WindowsAzure.Storage程序集),但不适用于Azure存储总线(引用Microsoft.S

  • 问题内容: 大师,我对这个话题迷迷糊糊。这是我要做的事的分解。 [用户/ Android设备]将位置信息发送到服务器-> [服务器] [服务器]从-> [db]返回使用sql排序的项目列表 [服务器]获取表信息并返回到用户-> [用户/ Android设备] 因此,从上述情况来看,我不知道如何使用Eclipse与服务器通信?我是否在Java中使用php或asp(如果可能的话:S)还是可以指向某个链

  • 下面是我的服务器代码: 下面是我的客户端活动代码: 以下是客户端活动的xml布局文件: 因此,我开始认为这不是连接端口的问题,而是应用程序的android客户端的问题。但我想不出有什么问题。 顺便说一下,当我试图发送消息时,运行客户端的手机和运行服务器的笔记本电脑都连接到了同一个网络。