XMPPStringUtils error for smack

Hi All,

I wrote a simple client java code to send a message to the server. However, I ran into some issues when running the code. I have an idea that my issue has alot to do with the libraries that have included. Below, I have included my java code. Secondly, the error that I received when I run the java code. Lastly, the libraries that I use to run the code. I am using eclipse, android Developer Tools Build: v22.6.2-1085508. Please give me suggestions on how to fix the issue …

Code:


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import org.jivesoftware.smack.AbstractXMPPConnection;

import org.jivesoftware.smack.Chat;

import org.jivesoftware.smack.ChatManager;

import org.jivesoftware.smack.ChatManagerListener;

import org.jivesoftware.smack.ConnectionConfiguration;

import org.jivesoftware.smack.MessageListener;

import org.jivesoftware.smack.Roster;

import org.jivesoftware.smack.Roster.SubscriptionMode;

import org.jivesoftware.smack.SmackException.NotConnectedException;

import org.jivesoftware.smack.XMPPException;

import org.jivesoftware.smack.packet.Message;

import org.jivesoftware.smack.tcp.XMPPTCPConnection;

public class SuperSimpleXMPPClient {

private static String userName =" "; // deleted this for obvious reasons

private static String password = " "; // deleted this for obvious reasons

public static void main(String[] args) {

try {

ConnectionConfiguration config = new ConnectionConfiguration(“talk.google.com”, 5222, “gmail.com”);

AbstractXMPPConnection connection = new XMPPTCPConnection(config);

connection.connect();

connection.login(userName, password);

Roster roster = connection.getRoster();

roster.setSubscriptionMode(SubscriptionMode.accept_all);

ChatManager chatmanager = ChatManager.getInstanceFor(connection);

chatmanager.addChatListener(new ChatManagerListener() {

public void chatCreated(final Chat chat, final boolean createdLocally) {

chat.addMessageListener(new MessageListener() {

public void processMessage(Chat chat, Message message) {

String text = message.getBody();

System.out.println("Received message from " + chat.getParticipant() + ": " + text);

if(text != null) {

respondInReverse(chat, text);

}

}

});

}

});

waitForExit();

connection.disconnect();

} catch (Throwable t) {

t.printStackTrace();

}

}

private static void respondInReverse(Chat chat, String text) {

char[] chars = text.toCharArray();

for(int i = 0; i < chars.length / 2; ++i) {

char temp = chars[i];

chars[i] = chars[chars.length - i - 1];

chars[chars.length - i - 1] = temp;

}

String response = new String(chars);

try {

chat.sendMessage(response);

} catch (XMPPException | NotConnectedException e) {

System.out.println(“Unexception while responding!”);

e.printStackTrace();

}

}

private static void waitForExit() throws IOException {

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

while (!reader.readLine().equals(“exit”)) {

}

}

}

Error:


xception in thread “Smack Packet Reader (0)” java.lang.NoClassDefFoundError: org/jxmpp/util/XmppStringUtils

at org.jivesoftware.smack.ConnectionConfiguration.setServiceName(ConnectionConfigu ration.java:208)

at org.jivesoftware.smack.AbstractXMPPConnection.setServiceName(AbstractXMPPConnec tion.java:473)

at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$700(XMPPTCPConnection.java: 96)

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPC onnection.java:1008)

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$200(XMPPTCPCon nection.java:876)

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnecti on.java:908)

Caused by: java.lang.ClassNotFoundException: org.jxmpp.util.XmppStringUtils

at java.net.URLClassLoader$1.run(URLClassLoader.java:366)

at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:354)

at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

… 6 more

org.jivesoftware.smack.SmackException$NoResponseException

at org.jivesoftware.smack.AbstractXMPPConnection.throwConnectionExceptionOrNoRespo nse(AbstractXMPPConnection.java:460)

at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$300(XMPPTCPConnection.java: 96)

at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.startup(XMPPTCPConnec tion.java:939)

at org.jivesoftware.smack.tcp.XMPPTCPConnection.initConnection(XMPPTCPConnection.j ava:501)

at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPC onnection.java:459)

at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection. java:820)

at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.ja va:302)

at SuperSimpleXMPPClient.main(SuperSimpleXMPPClient.java:30)


Here are the list of libraries include in the java build path:

smack-core-4.1.0-alpha1-SNAPSHOT.jar

smack-tcp-4.1.0-alpha1-SNAPSHOT.jar

xpp3-1.1.4c.jar

Cheers,

KA

(a)Smack 4.1 needs jxmpp. Also plain Smack wont work on Android, you need aSmack.

I have the same problem. i didn’t include xpp3-1.1.4c.jar and by logging the code i can connect to the server but after that it throws an error. My code is below.

private class LongOperation extends AsyncTask<String, Void, String> {


** @Override**

** protected String doInBackground(String… params) {**




** ConnectionConfiguration connConfig = null;**

** try {**

** connConfig = new ConnectionConfiguration(HOST, PORT, SERVICE);**

** } catch (Exception e1) {**

** // TODO Auto-generated catch block**

** Log.d(“memo”, “wrong config”);**

** e1.printStackTrace();**

** }**



** AbstractXMPPConnection connection = new XMPPTCPConnection(connConfig);**


** try {**

** Log.d(“memo”, “trying to connect”);**

** connection.connect();**

** Log.d(“memo”, “connected to the server”);**


** Log.d(“memo”, connection.getHost());**



** } catch (XMPPException e) {**

** // TODO Auto-generated catch block**

** e.printStackTrace();**

** Log.d(“memo”, “xmppexception”);**

** } catch (SmackException e) {**

** // TODO Auto-generated catch block**

** Log.d(“memo”, “smackexemption”);**

** e.printStackTrace();**

** } catch (IOException e) {**

** // TODO Auto-generated catch block**

** Log.d(“memo”, “ioexcemption”);**

** e.printStackTrace();**

** }**

** return “Executed”;**




** }**

Logcat:

11-29 20:13:56.774: E/AndroidRuntime(28311): FATAL EXCEPTION: Smack Packet Reader (0)

11-29 20:13:56.774: E/AndroidRuntime(28311): java.lang.NoClassDefFoundError: org.jxmpp.util.XmppStringUtils

11-29 20:13:56.774: E/AndroidRuntime(28311): at org.jivesoftware.smack.ConnectionConfiguration.setServiceName(ConnectionConfigu ration.java:216)

11-29 20:13:56.774: E/AndroidRuntime(28311): at org.jivesoftware.smack.AbstractXMPPConnection.setServiceName(AbstractXMPPConnec tion.java:469)

11-29 20:13:56.774: E/AndroidRuntime(28311): at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$800(XMPPTCPConnection.java: 132)

11-29 20:13:56.774: E/AndroidRuntime(28311): at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPC onnection.java:1055)

11-29 20:13:56.774: E/AndroidRuntime(28311): at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$200(XMPPTCPCon nection.java:969)

11-29 20:13:56.774: E/AndroidRuntime(28311): at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnecti on.java:988)

11-29 20:13:53.561: D/memo(28311): trying to connect

11-29 20:13:56.764: D/memo(28311): connected to the server

11-29 20:13:56.764: D/memo(28311): 192.168…something.

My question is after connecting to the server how come an error like this can happen thanks in advance.