我创建了一个具有FTP连接的Android应用程序,但是当我启动该应用程序时,它显示“很遗憾您的应用程序必须停止”,并且我找不到问题。
我尝试进入本地被动模式,但是对我没有帮助,我也尝试在手机上运行该应用程序,但它给了我同样的信息。

import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity implements OnClickListener {
    Button scan;
    String contents;
    String format;
    TextView contentstext;
    TextView formattext;
    FTPClient  ftpclient;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //----------------------FTP-------------
        new FtpTask().execute();
        //ftpclient.enterLocalPassiveMode();
        try {
        ftpclient.changeToParentDirectory();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }




        scan=(Button)findViewById(R.id.scanbutton);
        contentstext=(TextView)findViewById(R.id.contentstext);
        formattext=(TextView)findViewById(R.id.formattext);
        scan.setOnClickListener(this);

    }

    private class FtpTask extends AsyncTask<Void, Void, FTPClient> {
        protected FTPClient doInBackground(Void... args) {
            FTPClient  ftp = new FTPClient ();
            try {
                ftp.connect("ftp.drivehq.com");
                ftp.login("zule","****");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           return ftp;
        }

        protected void onPostExecute(FTPClient result) {
            Log.v("FTPTask","FTP connection complete");
            ftpclient = result;
        }

    }

这是logcat:

09-17 12:11:30.319: E/AndroidRuntime(1113): FATAL EXCEPTION: main
09-17 12:11:30.319: E/AndroidRuntime(1113): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.market/com.example.market.MainActivity}: java.lang.NullPointerException
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.os.Looper.loop(Looper.java:137)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.app.ActivityThread.main(ActivityThread.java:4424)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at java.lang.reflect.Method.invokeNative(Native Method)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at java.lang.reflect.Method.invoke(Method.java:511)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at dalvik.system.NativeStart.main(Native Method)
09-17 12:11:30.319: E/AndroidRuntime(1113): Caused by: java.lang.NullPointerException
09-17 12:11:30.319: E/AndroidRuntime(1113):     at com.example.market.MainActivity.onCreate(MainActivity.java:32)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.app.Activity.performCreate(Activity.java:4465)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-17 12:11:30.319: E/AndroidRuntime(1113):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
09-17 12:11:30.319: E/AndroidRuntime(1113):     ... 11 more

#1楼 票数:0 已采纳

查看堆栈跟踪。 它说您在第32行有一个NullPointerException。
如果我算对了,那就是这一行:

ftpclient.changeToParentDirectory();

注意,您的类成员ftpClient没有实例化; 因此,当您尝试对其调用changeToParentDirectory() ,它仍然为null

在此调用之前的某处添加ftpClient = new FtpClient( ... )应该可以解决您的问题。 为点添加正确的参数。

  ask by fsdf fsd translate from so

未解决问题?本站智能推荐:

1回复

谷歌驱动器配额使用android api驱动器

如何获得用户的Google云端硬盘帐户的存储空间和已用配额? 我正在使用用于驱动器的android api构建一个android应用程序: https : //developers.google.com/drive/android/ 。 我找不到任何可以为我返回详细信息的方法,但是,我相
1回复

在谷歌驱动器上保存文件

嘿,我正在尝试执行应用程序,在其中检查我的当前位置并将此位置保存在“.txt”文件中。 我的应用程序在每个“用户设置时间”秒内保存此位置。 这是工作。 另外我想将保存文件添加到谷歌驱动器。 但我不知道怎么做。 有什么方法可以创建文件夹并保存“.txt”文件,就像我对本地文件夹所做的一样? 先感谢
2回复

驱动器API未运行?

我正在尝试使用Drive API列出Google云端硬盘中的所有文件。 我发现了一个API可以给我这个清单。 当我尝试在API资源管理器中运行此API时,效果很好。 给我所有文件的清单https://www.googleapis.com/drive/v3/files 但是,当我在
1回复

驱动器REST API仅使用wifi

以前,Android版Google Drive API允许进行设置,仅当设备通过WIFI连接到互联网时才进行数据传输: https://developers.google.com/android/reference/com/google/android/gms/drive/Transfer
1回复

在单独的驱动器上安装JDK

我正在尝试使用Android SDK安装程序,它不断告诉我找不到JDK。 我从Sun下载并安装了JDK。 我将JRE放在以下路径中: C:\\ Program Files \\ Java 我在以下路径中安装了JDK: D:\\ Development_Tools \\ Ja
1回复

Android Google Drive集成-驱动器未连接

我是Android的新手,正尝试使用Google云端硬盘存储和检索数据。我已经编写了连接google云端硬盘的代码。 它显示了帐户选择器对话框,并且在选择帐户时没有任何反应。
2回复

Xamarin Android,检测USB驱动器连接

我正在使用Visual Studio 2015和Xamarin,并且试图检测用户何时在Android应用程序中插入USB驱动器。 这是我的BroadcastReceiver实现。 接收者通过OnCreate方法在MainActivity中注册。 这是我的AndroidMan
4回复

Google Drive Android API如何将音频文件上传到我的驱动器? 如何同步驱动器文件?

我已经看过演示程序,但尝试使用其中上载图像的QuickStart示例。 但是我没有得到如何上传音频文件的方法,我将在其中提供文件路径或Intent Picker来选择文件。我正在使用createFile()方法 如何将音频文件上传到驱动器? 我需要将其转换为任何流吗