繁体   English   中英

java:连接到openfire服务器

[英]java:connection to openfire server

我无法连接到服务器。 请帮助我解决错误。 我想知道所有需要的罐子。 如何进行初始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

我在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) {

            }

        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM