Android 带aSmack库的XMPP获取错误?
我正在努力使aSmack在我的项目中起作用。在eclipse中创建了一个标准项目,将jar(smack.jar、smackx-debug.jar、smackx-jingle.jar、smackx.jar)添加到libs文件夹中。开始使用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方法
无法找到从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并共享?