2

我正在尝试让 aSmack 在我的项目中工作。在 Eclipse 中创建了一个标准项目,将 jars(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 文件中的问题还是我必须更改代码中的任何内容...

4

1 回答 1

5

你确定你使用的是 asmack jars 而不是 smack jars?因为如果您使用普通的 smack,此错误看起来会出现。

于 2012-06-13T12:38:19.777 回答