带有aSmack库的XMPP收到错误?

时间:2012-06-13 12:05:12

标签: android client xmpp

我正在尝试让sSck在我的项目中工作。在eclipse中创建了一个标准项目,将jar(smack.jar,smackx-debug.jar,smackx-jingle.jar,smackx.jar)添加到libs文件夹中。开始使用XMPP类,但我不确定我是否应该做些什么来正确设置项目(稍后),因为它不起作用。当我运行该应用程序时,我收到此错误Could not find class 'java.beans.PropertyDescriptor', referenced from method org.jivesoftware.smack.util.PacketParserUtils.parseWithIntrospection,当我尝试发送消息时,我收到此错误java.lang.IllegalStateException: Not connected to server.at org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:445)

这是我正在使用的代码

public  class ClientJabberActivity extends Activity {

   private  final  static String server_host =  "aaaaa.com" ;
   private  final  static  int SERVER_PORT =  5222 ;
   private  final  static String SERVICE_NAME =  "gmail.com" ;  
   private  final  static String LOGIN =  "xxxx@name.com" ;
   private  final  static String PASSWORD =  "yyyy";

   ArrayList<String> m_discussionThread;
   ArrayAdapter<String> m_discussionThreadAdapter;
   XMPPConnection m_connection;
   private Handler m_handler;   

   @ Override 
   public  void  onCreate (Bundle savedInstanceState) { 
   super . onCreate (savedInstanceState);
   setContentView (R.layout.main);
   m_handler =  new  Handler ();
     try  { 
        initConnection ();
     }  catch (XMPPException e) { 
        e. printStackTrace ();
     }

    final EditText recipient = (EditText) this . findViewById (R.id.recipient);
    final EditText message = (EditText) this . findViewById (R.id.message);     
    ListView list = (ListView) this . findViewById (R.id.thread);

    m_discussionThread =  new ArrayList<String>();
    m_discussionThreadAdapter =  new ArrayAdapter<String>  ( this ,
            R.layout.multi_line_list_item,  m_discussionThread);
    list.setAdapter(m_discussionThreadAdapter);

    Button send = (Button) this . findViewById (R.id.send);
    send. setOnClickListener ( new View. OnClickListener () { 
        public  void  onClick (View view) {                 

            String to = recipient.getText().toString ();
            String text = message.getText().toString ();

            Message msg =  new  Message(to, Message.Type.chat);
            msg.setBody(text);
            m_connection.sendPacket (msg);
            m_discussionThread. add ( " Me  : " );
            m_discussionThread. add (text);
            m_discussionThreadAdapter. notifyDataSetChanged ();
         } 
    } );
 }

private  void  initConnection () throws XMPPException { 

    ConnectionConfiguration config = new  ConnectionConfiguration (server_host, SERVER_PORT, SERVICE_NAME);
    m_connection =  new  XMPPConnection (config);
    m_connection.connect ();
    m_connection.login(LOGIN, PASSWORD);
    Presence presence =  new  Presence(Presence.Type.available);
    Log.i("ID", ""+presence);
    m_connection.sendPacket (presence);       

    PacketFilter filter =  new  MessageTypeFilter(Message.Type.chat);

    m_connection.addPacketListener(new PacketListener() {
        public void processPacket(Packet packet) {
            Message message = (Message) packet;
                if (message.getBody() != null) {
                String fromName = StringUtils.parseBareAddress(message.getFrom());
                m_discussionThread.add(fromName + ":");
                m_discussionThread.add(message.getBody());

                m_handler.post(new Runnable() {
                public void run() {
                m_discussionThreadAdapter.notifyDataSetChanged();
                }
                });
            }
        }
    }, filter);

ChatManager chatmanager = m_connection.getChatManager();
  chatmanager.addChatListener(new ChatManagerListener()
  {
    public void chatCreated(final Chat chat, final boolean createdLocally)
    {
      chat.addMessageListener(new MessageListener()
      {
        public void processMessage(Chat chat, Message message)
        {
          System.out.println("Received message: " 
            + (message != null ? message.getBody() : "NULL"));
          Log.i("CHAT USER", "Received message is: "+message.getBody());
        }
      });
    }
  });
}
}

任何人都在您的XMPP客户端中遇到过此问题。是jar文件中的问题还是我需要更改代码中的任何内容...

1 个答案:

答案 0 :(得分:5)

你确定你使用的是asmack罐子而不是smack罐子吗?因为如果你使用普通的smack,你会得到这个错误。