servlets - java.lang.ClassNotFoundException: org.jivesoftware.smack.SmackException$NotConnectedException Smack -
smack not working servlet. however, works fine when copy-paste code , run desktop application. error occurs @ chatserver.java:42 here's code:
servlet (chatserver.java):
import java.io.ioexception; import java.io.printwriter; import java.util.arraylist; import java.util.collection; import java.util.hashmap; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.jivesoftware.smack.rosterentry; /** * servlet implementation class chatserver */ @webservlet("/chatserver") public class chatserver extends httpservlet { private static final long serialversionuid = 1l; /** * default constructor. */ public chatserver() { // todo auto-generated constructor stub } /** * @see httpservlet#doget(httpservletrequest request, httpservletresponse response) */ protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { } /** * @see httpservlet#dopost(httpservletrequest request, httpservletresponse response) */ protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { string jid = request.getparameter("jid"); string pword = request.getparameter("pword"); connection.register(jid, pword, "192.168.1.75", "5222"); } }
connection class (connection.java):
import java.util.collection; import org.jivesoftware.smack.connectionconfiguration; import org.jivesoftware.smack.roster; import org.jivesoftware.smack.rosterentry; import org.jivesoftware.smack.saslauthentication; import org.jivesoftware.smack.smackexception.notconnectedexception; import org.jivesoftware.smack.xmppconnection; import org.jivesoftware.smack.packet.presence; import org.jivesoftware.smack.tcp.xmpptcpconnection; public class connection{ /** * @param args */ static xmppconnection connection; public static void register(string username, string password, string host, string port){ // username += "@" + host; string service = host; connectionconfiguration connconfig = new connectionconfiguration(host, integer.parseint(port), service); connection = new xmpptcpconnection(connconfig); saslauthentication.supportsaslmechanism("plain", 0); connconfig.setsecuritymode(connectionconfiguration.securitymode.disabled); try { connection.connect(); }catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } try { connection.login(username, password); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } // set status available presence presence = new presence(presence.type.available); try { connection.sendpacket(presence); } catch (notconnectedexception e) { // todo auto-generated catch block e.printstacktrace(); } } public static collection<rosterentry> getroster(){ roster roster = connection.getroster(); collection<rosterentry> entries = roster.getentries(); return entries; } public static void sendmsg(string jid, string msg_text){ } }
full stack trace:
java.lang.classnotfoundexception: org.jivesoftware.smack.smackexception$notconnectedexception @ org.apache.catalina.loader.webappclassloader.loadclass(webappclassloader.java:1720) @ org.apache.catalina.loader.webappclassloader.loadclass(webappclassloader.java:1571) @ chatserver.create_connection(chatserver.java:73) @ chatserver.dopost(chatserver.java:52) @ javax.servlet.http.httpservlet.service(httpservlet.java:646) @ javax.servlet.http.httpservlet.service(httpservlet.java:727) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:504) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:170) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:103) @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:950) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:421) @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1074) @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:611) @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:314) @ java.util.concurrent.threadpoolexecutor.runworker(unknown source) @ java.util.concurrent.threadpoolexecutor$worker.run(unknown source) @ org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) @ java.lang.thread.run(unknown source)
you're missing jar contains org.jivesoftware.smack.smackexception
class. need place jar on classpath. since appears servlet running in tomcat should package jar application before deploying it.
Comments
Post a Comment