Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Java 严重异常错误Android_Java_Android_Exception Handling_Xmpp - Fatal编程技术网

Java 严重异常错误Android

Java 严重异常错误Android,java,android,exception-handling,xmpp,Java,Android,Exception Handling,Xmpp,我正试图通过android设备通过XMPPClient连接到open fire服务器。我在异步任务上分别运行网络线程 问题是 1-我的代码不允许我连接到openfire服务器,但它可以轻松连接到gmail服务器。我的代码中是否缺少某些内容 2-当我的系统连接到任何服务器(比如gmail)时,它崩溃了,我的LogCat中出现以下错误 错误 03-07 12:29:57.085: W/dalvikvm(26662): threadid=11: thread exiting with uncaught

我正试图通过android设备通过
XMPPClient
连接到open fire服务器。我在
异步任务
上分别运行
网络线程

问题是

1-我的代码不允许我连接到openfire服务器,但它可以轻松连接到gmail服务器。我的代码中是否缺少某些内容

2-当我的系统连接到任何服务器(比如gmail)时,它崩溃了,我的
LogCat中出现以下错误

错误

03-07 12:29:57.085: W/dalvikvm(26662): threadid=11: thread exiting with uncaught exception (group=0x40a95210)
03-07 12:29:57.115: E/AndroidRuntime(26662): FATAL EXCEPTION: AsyncTask #1
03-07 12:29:57.115: E/AndroidRuntime(26662): java.lang.RuntimeException: An error occured while executing doInBackground()
03-07 12:29:57.115: E/AndroidRuntime(26662):    at android.os.AsyncTask$3.done(AsyncTask.java:278)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at java.lang.Thread.run(Thread.java:856)
03-07 12:29:57.115: E/AndroidRuntime(26662): Caused by: java.lang.NullPointerException
03-07 12:29:57.115: E/AndroidRuntime(26662):    at com.example.test.NetworkOperation.doInBackground(NetworkOperation.java:42)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at com.example.test.NetworkOperation.doInBackground(NetworkOperation.java:1)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
03-07 12:29:57.115: E/AndroidRuntime(26662):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
以下是在异步任务中运行的代码

import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Presence;

import android.os.AsyncTask;
import android.util.Log;

public class NetworkOperation extends AsyncTask<String, Void, String> {

    private XMPPClient xmppClient;
    @Override
    protected String doInBackground(String... urls) {

        String host = "talk.google.com"; //getText(R.id.host);
        String port = "5222";  //getText(R.id.port);
        String service = "gmail.com"; //getText(R.id.service);
        String username = "hassaan.rabbani@gmail.com"; //getText(R.id.userid);
        String password = "**********"; //getText(R.id.password);

        // Create a connection
        ConnectionConfiguration connConfig =
                new ConnectionConfiguration(host, Integer.parseInt(port),service);
        XMPPConnection connection = new XMPPConnection(connConfig);

        try {
            connection.connect();
            Log.i("XMPPClient", "[SettingsDialog] Connected to " + connection.getHost());
        } catch (XMPPException ex) {
            Log.e("XMPPClient", "[SettingsDialog] Failed to connect to " + connection.getHost());
            xmppClient.setConnection(null);
        }
        try {
            connection.login(username, password);
            Log.i("XMPPClient", "Logged in as " + connection.getUser());

            // Set the status to available
            Presence presence = new Presence(Presence.Type.available);
            connection.sendPacket(presence);
            xmppClient.setConnection(connection);
        } catch (XMPPException ex) {
            Log.e("XMPPClient", "[SettingsDialog] Failed to log in as " + username);
            xmppClient.setConnection(null);
        }

      return null;
    }

    @Override
    protected void onPostExecute(String result) {

    }
  }
import org.jivesoftware.smack.ConnectionConfiguration;
导入org.jivesoftware.smack.XMPPConnection;
导入org.jivesoftware.smack.XMPPException;
导入org.jivesoftware.smack.packet.Presence;
导入android.os.AsyncTask;
导入android.util.Log;
公共类网络操作扩展了异步任务{
私有XMPPClient-XMPPClient;
@凌驾
受保护的字符串doInBackground(字符串…URL){
String host=“talk.google.com”;//getText(R.id.host);
String port=“5222”//getText(R.id.port);
String service=“gmail.com”;//getText(R.id.service);
String username=“hassaan。rabbani@gmail.com“;//getText(R.id.userid);
字符串password=“**********”;//getText(R.id.password);
//创建连接
连接配置CONNCONCONFIG=
新的连接配置(主机、Integer.parseInt(端口)、服务);
XMPPConnection连接=新的XMPPConnection(connconconfig);
试一试{
connection.connect();
Log.i(“XMPPClient”,连接到“+connection.getHost()”的“[SettingsDialog]”;
}捕获(XMPPException-ex){
Log.e(“XMPPClient”,“[SettingsDialog]无法连接到”+connection.getHost());
xmppClient.setConnection(null);
}
试一试{
连接。登录(用户名、密码);
Log.i(“XMPPClient”,“以“+connection.getUser()身份登录”);
//将状态设置为“可用”
状态=新状态(Presence.Type.available);
连接。发送数据包(存在);
xmppClient.setConnection(连接);
}捕获(XMPPException-ex){
Log.e(“XMPPClient”,“[SettingsDialog]以“+用户名”登录失败);
xmppClient.setConnection(null);
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
}
}

我错过什么了吗?n?

看起来您从未给xmppClient变量赋值,因此它是空的

您在第一次尝试中没有击中它,因为它正在成功。

请使用下面的代码进行尝试

@Override
protected String doInBackground(String... urls) {

    String host = "talk.google.com"; //getText(R.id.host);
    String port = "5222";  //getText(R.id.port);
    String service = "gmail.com"; //getText(R.id.service);
    String username = "hassaan.rabbani@gmail.com"; //getText(R.id.userid);
    String password = "**********"; //getText(R.id.password);

    // Create a connection
    ConnectionConfiguration connConfig =
            new ConnectionConfiguration(host, Integer.parseInt(port),service);
    XMPPConnection connection = new XMPPConnection(connConfig);
    if(xmppClient != null){
    try {
        connection.connect();
        Log.i("XMPPClient", "[SettingsDialog] Connected to " + connection.getHost());
        connection.login(username, password);
        Log.i("XMPPClient", "Logged in as " + connection.getUser());

        // Set the status to available
        Presence presence = new Presence(Presence.Type.available);
        connection.sendPacket(presence);
        xmppClient.setConnection(connection);
    } catch (XMPPException ex) {
        Log.e("XMPPClient", "[SettingsDialog] Failed to connect to " + connection.getHost());
        xmppClient.setConnection(null);
    }
    }else{
        Log.d("Connection", "check your xmppClient");
    }

  return null;
}

我现在唯一不喜欢的代码是double
try
块。如果第一个失败,第二个仍然执行。在第二个try块中,我在执行此行xmppClient.setConnection(connection)后得到了未捕获的异常;