我测试了eclipse与Smack 4.1.0 Beta3之间的连接和本地主机中的openfire之间的连接,但得到了一些错误。
XMPPTCPConnectionConfiguration conf =XMPPTCPConnectionConfiguration.builder()
.setHost("127.0.0.1")
.setPort(5222)
.setCompressionEnabled(false)
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
.build();
XMPPTCPConnection connection = new XMPPTCPConnection(conf);
try {
connection.connect();
connection.login("admin","admin");
} catch (SmackException | IOException | XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}当我在android应用程序“模拟器”上运行时,我得到了消息Unfortunately,test_connection has stopped.和LogCat显示。
FATAL EXCEPTION: main
Process:com.example.test_connection, PID: 1956
java.lang.NoClassDefFoundError: org.jxmpp.util.XmppStringUtils发布于 2015-03-12 06:41:56
你没写过你用的是什么版本的开爆枪。如果是3.9.3,下面的例子应该是有帮助的。祝好运!
Smack版本:smack-4.2.0-alpha1 1-快照Openfire版本: 3.9.3
Smack库:核心、im、java7、sasl提供的tcp
带有附加库的: jxmpp-util-cache-0.4.1.jar,jxmpp 0.4.1.jar,minidns-0.1.jar
请按照下面的代码:
public class MyConnection implements ConnectionListener {
...
XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
config.setUsernameAndPassword(userName + "@" + DOMAIN, password);
config.setServiceName(DOMAIN);
config.setHost(DOMAIN);
config.setPort(PORT);
config.setDebuggerEnabled(true);
AbstractXMPPConnection mConnection = new XMPPTCPConnection(config.build());
mConnection.setPacketReplyTimeout(10000);
mConnection.addConnectionListener(this);
try {
mConnection.connect();
} catch (SmackException | IOException | XMPPException e) {
e.printStackTrace();
}
@Override
public void connected(XMPPConnection xmppConnection) {
Log.d(TAG, "connected");
try {
mConnection.login();
} catch (XMPPException | SmackException | IOException e) {
e.printStackTrace();
}
}必须重写的其他方法:
@Override
public void authenticated(XMPPConnection xmppConnection, boolean b) {
Log.d(TAG, "authenticated");
}
@Override
public void connectionClosed() {
Log.d(TAG, "connectionClosed");
}
@Override
public void connectionClosedOnError(Exception e) {
Log.d(TAG, "connectionClosedOnError" + e.toString());
}
@Override
public void reconnectionSuccessful() {
Log.d(TAG, "reconnectionSuccessful");
}
@Override
public void reconnectingIn(int i) {
Log.d(TAG, "reconnectingIn");
}
@Override
public void reconnectionFailed(Exception e) {
Log.d(TAG, "reconnectionFailed");
}https://stackoverflow.com/questions/28830829
复制相似问题