2012-06-13 2 views
2

나는 내 프로젝트에서 엄숙한 작업을하려고 노력 중이다. Eclipse에서 표준 프로젝트를 만들고 libs 폴더에 jars (smack.jar, smackx-debug.jar, smackx-jingle.jar, smackx.jar)를 추가했습니다. XMPP 클래스를 사용하기 시작했으나 제대로 작동하지 않아 프로젝트를 올바르게 설정하기 위해해야 ​​할 일이 있는지 확실하지 않습니다. 내가 응용 프로그램을 실행할 때 나는이 문제에 경험이 내가aSmack 라이브러리의 XMPP에 오류가 있습니까?

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 = "[email protected]" ; 
    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()); 
     } 
     }); 
    } 
    }); 
} 
} 

누구를 사용하고있는 코드이 오류 java.lang.IllegalStateException: Not connected to server.at org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:445)

을 얻고 메시지를 보내려고 할 때 나는이 오류 Could not find class 'java.beans.PropertyDescriptor', referenced from method org.jivesoftware.smack.util.PacketParserUtils.parseWithIntrospection 무엇입니까 귀하의 XMPP 클라이언트. jar 파일에 문제가 있거나 코드에서 아무 것도 변경해야하는 것이 있습니다 ...

답변

5

마약 항아리가 아닌 asmack 항아리를 사용하고 있습니까? 왜냐하면이 실수는 당신이 평범한 약을 사용하고 있다면 얻게 될 것입니다.

+0

Steffen이 말했듯이 당신은 엉뚱한 항아리를 사용하는 것처럼 보입니다. 이 항아리를 사용하십시오. http://code.google.com/p/gtalksms/source/browse/libs/asmack-android-5.jar 일반적으로 가장 많이 사용됩니다. – Jug6ernaut

+0

나중에 나는 jar 파일에서 실수를 범했지만 gmail 계정에서 작동하지만 내 서버 계정에서는 문제가되지 않습니다 .... –

+0

좋습니다. 당신 질문에 대해서. 지금 문제가 무엇인지 더 자세히 설명해야합니다. –

관련 문제