Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带aSmack库的XMPP获取错误?_Android_Client_Xmpp - Fatal编程技术网

Android 带aSmack库的XMPP获取错误?

Android 带aSmack库的XMPP获取错误?,android,client,xmpp,Android,Client,Xmpp,我正在努力使aSmack在我的项目中起作用。在eclipse中创建了一个标准项目,将jar(smack.jar、smackx-debug.jar、smackx-jingle.jar、smackx.jar)添加到libs文件夹中。开始使用XMPP类,但我不确定是否还有其他事情需要我来正确设置项目(稍后),因为它不起作用。当我运行应用程序时,我遇到了以下错误无法找到从org.jivesoftware.smack.util.PacketParserUtils.ParseWithInspection方法

我正在努力使aSmack在我的项目中起作用。在eclipse中创建了一个标准项目,将jar(smack.jar、smackx-debug.jar、smackx-jingle.jar、smackx.jar)添加到libs文件夹中。开始使用XMPP类,但我不确定是否还有其他事情需要我来正确设置项目(稍后),因为它不起作用。当我运行应用程序时,我遇到了以下错误
无法找到从org.jivesoftware.smack.util.PacketParserUtils.ParseWithInspection方法引用的类“java.beans.PropertyDescriptor”
,当我尝试发送消息时,收到以下错误
java.lang.IllegalStateException:未连接到服务器。
位于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());
        }
      });
    }
  });
}
}
公共类ClientJabberActivity扩展活动{
私有最终静态字符串服务器\u host=“aaaaa.com”;
专用最终静态int服务器_端口=5222;
私有最终静态字符串服务\u NAME=“gmail.com”;
私有最终静态字符串登录=”xxxx@name.com" ;
私有最终静态字符串密码=“yyyy”;
ArrayList m_讨论线程;
阵列适配器m_discussionThreadAdapter;
XMPPConnection m_连接;
私有处理器m_处理器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
m_handler=newhandler();
试试{
initConnection();
}捕获(XMPPException e){
e、 printStackTrace();
}
最终EditText收件人=(EditText)this.findViewById(R.id.recipient);
final EditText message=(EditText)this.findviewbyd(R.id.message);
ListView list=(ListView)this.findviewbyd(R.id.thread);
m_discussionThread=newarraylist();
m_discussionThreadAdapter=新阵列适配器(此,
R.layout.multi_line_list_item,m_discussionThread);
列表.setAdapter(m_discussionThreadAdapter);
按钮发送=(按钮)this.findViewById(R.id.send);
send.setOnClickListener(新视图.OnClickListener(){
public void onClick(视图){
字符串to=recipient.getText().toString();
String text=message.getText().toString();
Message msg=新消息(收件人,Message.Type.chat);
msg.setBody(文本);
m_connection.sendPacket(msg);
m_discussionThread.添加(“我:”);
m_discussionThread.add(文本);
m_discussionThreadAdapter.notifyDataSetChanged();
} 
} );
}
私有void initConnection()抛出XMPPException{
ConnectionConfiguration config=新的ConnectionConfiguration(服务器\主机、服务器\端口、服务\名称);
m_连接=新的XMPPConnection(配置);
m_connection.connect();
m_连接。登录(登录,密码);
状态=新状态(Presence.Type.available);
Log.i(“ID”,“存在”);
m_connection.sendPacket(存在);
PacketFilter=newmessagetypefilter(Message.Type.chat);
m_connection.addPacketListener(新的PacketListener(){
公共无效处理数据包(数据包){
消息消息=(消息)数据包;
if(message.getBody()!=null){
String fromName=StringUtils.parseBareAddress(message.getFrom());
m_discussionThread.add(fromName+“:”);
m_discussionThread.add(message.getBody());
m_handler.post(新的Runnable(){
公开募捐{
m_discussionThreadAdapter.notifyDataSetChanged();
}
});
}
}
},过滤器);
ChatManager ChatManager=m_connection.getChatManager();
addChatListener(新的ChatManagerListener()
{
已创建公共无效聊天室(最终聊天室,最终布尔值本地创建)
{
addMessageListener(新MessageListener()
{
public void processMessage(聊天室、消息消息)
{
System.out.println(“收到的消息:”
+(message!=null?message.getBody():“null”);
Log.i(“聊天用户”,“收到的消息是:”+message.getBody());
}
});
}
});
}
}

任何人都曾在XMPP客户端遇到过此问题。jar文件中有问题吗?或者我必须更改代码中的任何内容…

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

正如Steffen所说,您似乎使用了错误的罐子。使用这个jar它通常是最新的。是的,我在jar文件中犯了一个错误,现在它正在为gmail帐户工作,但不是我的服务器帐户。问题是什么……很好。关于你的问题。你必须更清楚地解释现在的问题所在。@jug6er如果你的链接断了,你能建议一些替代方案吗?或者将jar上传到dropbox并共享?