【问题标题】:java:connection to openfire serverjava:连接到openfire服务器
【发布时间】:2016-02-25 18:29:06
【问题描述】:

我无法连接到服务器。 请帮我解决错误。 我想知道所有需要的罐子。 如何进行初始 smack 配置。 我想在 java 中构建简单的聊天应用程序。

 import java.io.IOException;
 import org.jivesoftware.smack.AbstractXMPPConnection;
 import org.jivesoftware.smack.SmackException;
 import org.jivesoftware.smack.XMPPException;
 import org.jivesoftware.smack.tcp.XMPPTCPConnection;
 import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;


public class Tests
{

  public static void main( String[] args ) throws SmackException,     IOException, XMPPException 
   {

       XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
        .setHost("127.0.0.1")
        .setPort(5222)
        .build();
       AbstractXMPPConnection conn1 = new XMPPTCPConnection(config);

       try
       {
            conn1.connect();
        }
      catch (XMPPException e)
      {
            e.printStackTrace();
      }
      try
      {
            conn1.login("username","password");
      }
      catch (XMPPException e)
      {
            e.printStackTrace();
      }
    }

}

错误

Exception in thread "main" java.lang.NoClassDefFoundError: org/jxmpp/util/XmppStringUtils
    at org.jivesoftware.smack.provider.ProviderManager.getKey(ProviderManager.java:314)
    at org.jivesoftware.smack.provider.ProviderManager.removeIQProvider(ProviderManager.java:217)
    at org.jivesoftware.smack.provider.ProviderManager.addIQProvider(ProviderManager.java:199)
    at org.jivesoftware.smack.provider.ProviderManager.addLoader(ProviderManager.java:128)
    at org.jivesoftware.smack.initializer.UrlInitializer.initialize(UrlInitializer.java:54)
    at org.jivesoftware.smack.SmackInitialization.loadSmackClass(SmackInitialization.java:232)
    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)
    at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96)
    at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38)
    at Tests.main(Tests.java:14)
Caused by: java.lang.ClassNotFoundException: org.jxmpp.util.XmppStringUtils
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 13 more

【问题讨论】:

    标签: java openfire smack


    【解决方案1】:

    我在 Maven 项目中使用了 Smack,这里是我定义的依赖项。

        <dependency>
            <groupId>xpp3</groupId>
            <artifactId>xpp3</artifactId>
            <version>1.1.4c</version>
        </dependency>
        <dependency>
            <groupId>xpp3</groupId>
            <artifactId>xpp3_min</artifactId>
            <version>1.1.4c</version>
        </dependency>
        <dependency>
            <groupId>xpp3</groupId>
            <artifactId>xpp3_xpath</artifactId>
            <version>1.1.4c</version>
        </dependency>
    
        <dependency>
            <groupId>org.igniterealtime.smack</groupId>
            <artifactId>smack-tcp</artifactId>
            <version>4.0.6</version>
        </dependency>
        <dependency>
            <groupId>org.igniterealtime.smack</groupId>
            <artifactId>smack-extensions</artifactId>
            <version>4.0.6</version>
        </dependency>
    

    在代码中:

        ConnectionConfiguration config = new ConnectionConfiguration("IM_DOMAIN", 5222);
        config.setDebuggerEnabled(false);
        config.setSecurityMode(SecurityMode.disabled);
        XMPPTCPConnection con = new XMPPTCPConnection(config);
    
        try {
    
            con.connect();
            con.login("USERNAME", "PASSWORD");
    
            Message msg = new Message("RECIPIENT_JID");
            msg.setBody("message");
            msg.setType(Type.chat);
            con.sendPacket(msg);
    
        } catch (SmackException | XMPPException | IOException | InterruptedException e) {
            throw e;
    
        } finally {
            if (null != con) {
                try {
                    con.disconnect();
                } catch (NotConnectedException e) {
    
                }
    
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2013-10-07
      • 1970-01-01
      • 2015-03-13
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多