我有一个完全适用于Java的Chat Client。现在我期待在我的android设备上实现相同的功能。我开始在项目中导入ASmack库,并在每个阶段检查以避免错误。尽管如此,我还是陷入了第一步。我的活动无法在ASmack Jar中找到该课程,因此我认为我无法继续。无法将XMPP服务器与Android中的ASmack连接起来
我的简单代码:
package com.test.mypro;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class TestProjectActivity extends Activity {
private static final String LOG_TAG = "TESTER";
/** Called when the activity is first created. */
TextView tvHello;
XMPPConnection connection;
ConnectionConfiguration config;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvHello = (TextView) findViewById(R.id.tvHello);
Log.i(LOG_TAG, "I'm here");
config = new ConnectionConfiguration("prc.p1.im", 5222, "prc.p1.im");
connection = new XMPPConnection(config);
try {
connection.connect();
// tvHello.setText("Connected to XMPP server");
Log.i(LOG_TAG, "Successfully Connected");
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(LOG_TAG, "Not Connected");
}
}
}
logcat的日志:
12-22 15:58:16.319: E/dalvikvm(828): Could not find class 'org.jivesoftware.smack.ConnectionConfiguration', referenced from method com.test.mypro.TestProjectActivity.onCreate
12-22 15:58:16.339: W/dalvikvm(828): VFY: unable to resolve new-instance 26 (Lorg/jivesoftware/smack/ConnectionConfiguration;) in Lcom/test/mypro/TestProjectActivity;
12-22 15:58:16.339: D/dalvikvm(828): VFY: replacing opcode 0x22 at 0x0019
12-22 15:58:16.351: D/dalvikvm(828): VFY: dead code 0x001b-0047 in Lcom/test/mypro/TestProjectActivity;.onCreate (Landroid/os/Bundle;)V
12-22 15:58:16.509: I/TESTER(828): I'm here
12-22 15:58:16.519: D/AndroidRuntime(828): Shutting down VM
12-22 15:58:16.519: W/dalvikvm(828): threadid=1: thread exiting with uncaught exception (group=0x40015560)
12-22 15:58:16.561: E/AndroidRuntime(828): FATAL EXCEPTION: main
12-22 15:58:16.561: E/AndroidRuntime(828): java.lang.NoClassDefFoundError: org.jivesoftware.smack.ConnectionConfiguration
12-22 15:58:16.561: E/AndroidRuntime(828): at com.test.mypro.TestProjectActivity.onCreate(TestProjectActivity.java:24)
12-22 15:58:16.561: E/AndroidRuntime(828): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-22 15:58:16.561: E/AndroidRuntime(828): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
12-22 15:58:16.561: E/AndroidRuntime(828): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
12-22 15:58:16.561: E/AndroidRuntime(828): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
12-22 15:58:16.561: E/AndroidRuntime(828): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
12-22 15:58:16.561: E/AndroidRuntime(828): at android.os.Handler.dispatchMessage(Handler.java:99)
12-22 15:58:16.561: E/AndroidRuntime(828): at android.os.Looper.loop(Looper.java:123)
12-22 15:58:16.561: E/AndroidRuntime(828): at android.app.ActivityThread.main(ActivityThread.java:3683)
12-22 15:58:16.561: E/AndroidRuntime(828): at java.lang.reflect.Method.invokeNative(Native Method)
12-22 15:58:16.561: E/AndroidRuntime(828): at java.lang.reflect.Method.invoke(Method.java:507)
12-22 15:58:16.561: E/AndroidRuntime(828): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-22 15:58:16.561: E/AndroidRuntime(828): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-22 15:58:16.561: E/AndroidRuntime(828): at dalvik.system.NativeStart.main(Native Method)
附加信息:我已经asmack-Android的7.jar库中导入。我的AVD正在运行2.3.3 Android。
我认为由于这个,我得到了致命的例外。 我在这里错过了什么?您的帮助将不胜感激。谢谢。
我想你没有看到正确的日志。在日志中应该注意的主要问题是:''无法找到从方法com.test.mypro.TestProjectActivity.onCreate引用的'org.jivesoftware.smack.ConnectionConfiguration'类。我无法调用COnnectionConfiguration类。尽管如此,我尝试了你的代码,得到了相同的结果 – harsh8888
一旦把连接代码放在单独的方法中,然后尝试。 – NagarjunaReddy
请检查日志。这个问题存在于我假设的图书馆的入口(日志的第一行)。它无法取出ConnectionConfiguration类,它将启动进一步的连接过程,因此将它放在单独的方法中不应该有任何区别。有什么建议么? – harsh8888