Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Android Новый топик    Ответить
 Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Господин Уэф!
Member

Откуда:
Сообщений: 247
В проект в Android Studio добавил библиотеку common-net-3.6.jar

По нажатию на кнопку должно происходить подключение к FTP
(взял распространенный пример в сети)

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import org.apache.commons.net.ftp.*;
import java.util.*;
import java.text.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class MainAct extends AppCompatActivity {

    private TextView Label1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_main);
        Label1 = (TextView)findViewById(R.id.vLabel1);
    }

    public static void testConnect(String srvname, String lgn, String pswd) //throws FileNotFoundException
    {
        FTPClient far2 = new FTPClient();
        //FileInputStream fis = new FileInputStream("cache/sxms.php");
        //String fs = "/sxms.php"; // адрес файла на сервере
        try {
            far2.connect(srvname);
            far2.enterLocalPassiveMode();
            far2.login(lgn, pswd);
            //far2.storeFile(fs, fis);
            far2.logout();
            far2.disconnect();
        } catch (IOException ex) { System.err.println(ex); }
    }

    public void onClick(View view) {
        Date Now = new Date();
        SimpleDateFormat formatForDateNow = new SimpleDateFormat("dd.mm.yyyy hh:mm:ss");
        Label1.setText("(проверка "+ formatForDateNow.format(Now)+" )");

        testConnect( "testserver.ru", "tst", "s9w@j7*n" );
    }

}


Компилируется, но при выполнении, (что на виртуальной машине, что в телефоне) программа при нажатии на целевую кнопку закрывается с сообщением "Приложение {имя} было остановлено".

Не могу понять, что не так с этими библиотеками.
8 июл 17, 13:30    [20625588]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Blazkowicz
Member

Откуда:
Сообщений: 23885
Господин Уэф!
В проект в Android Studio добавил библиотеку common-net-3.6.jar

На сайте есть профильный форум
http://www.sql.ru/forum/android

Господин Уэф!
Не могу понять, что не так с этими библиотеками.

Android не является реализацией Java Standard Edition.
8 июл 17, 14:05    [20625629]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Господин Уэф!
Member

Откуда:
Сообщений: 247
Т.е. тему туда переносить?
8 июл 17, 14:40    [20625667]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 31070
Господин Уэф!
"Приложение {имя} было остановлено".

В логах андроида смотри конкретную ошибку.
2. Обычно библиотеки просто прописывают в gradle файле.
8 июл 17, 14:50    [20625675]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 31070
Господин Уэф!
Т.е. тему туда переносить?

внизу кнопка - просьба модератору. Или продублируй там, только и всего.
8 июл 17, 14:51    [20625676]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Господин Уэф!
Member

Откуда:
Сообщений: 247
Petro123
В логах андроида смотри конкретную ошибку.

Я не нашел эти логи, можете подсказать где хранятся?
2. Обычно библиотеки просто прописывают в gradle файле.[/quot]
Это про что? Про способ подключения библиотек апача? Разве имеет значение то как они подключены? Я их подключил через интерфейс студии. После этого при написании import контекстная подсказка показывала как саму библиотеку так и разделы в ней.
Я это расценил как успешное подключение, разве не так?
9 июл 17, 06:56    [20626582]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 31070
Господин Уэф!,
В студии вкладка есть внизу в которой логи бегут при запуске. Неожиданно?
2. Я вам сказал как проще чтобы самому ничего не скачивать. Если работает. то и ладно.
9 июл 17, 10:19    [20626682]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Господин Уэф!
Member

Откуда:
Сообщений: 247
Petro123,

Логи не бегут, загрузка в виртуальный Android и на смартфон происходит без проблем.
ПРограмма запускается, и схлопывается только в обработчике нажатия кнопки.
Но вот что обнаружил в Android Monitor
+
--------- beginning of crash
07-09 13:28:20.448 2595-2595/com.example.testuser.nr_switcher E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               Process: com.example.testuser.nr_switcher, PID: 2595
                                                                               java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                                   at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                                   at android.view.View.performClick(View.java:4780)
                                                                                   at android.view.View$PerformClick.run(View.java:19866)
                                                                                   at android.os.Handler.handleCallback(Handler.java:739)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:135)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                                                                                Caused by: java.lang.reflect.InvocationTargetException
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                   at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                                   at android.view.View.performClick(View.java:4780) 
                                                                                   at android.view.View$PerformClick.run(View.java:19866) 
                                                                                   at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                   at android.os.Looper.loop(Looper.java:135) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
                                                                                Caused by: android.os.NetworkOnMainThreadException
                                                                                   at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147)
                                                                                   at java.net.InetAddress.lookupHostByName(InetAddress.java:418)
                                                                                   at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
                                                                                   at java.net.InetAddress.getByName(InetAddress.java:305)
                                                                                   at org.apache.commons.net.SocketClient.connect(SocketClient.java:202)
                                                                                   at org.apache.commons.net.SocketClient.connect(SocketClient.java:306)
                                                                                   at com.example.testuser.nr_switcher.MainAct.testConnect(MainAct.java:35)
                                                                                   at com.example.testuser.nr_switcher.MainAct.onClick(MainAct.java:53)
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                   at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                                                                                   at android.view.View.performClick(View.java:4780) 
                                                                                   at android.view.View$PerformClick.run(View.java:19866) 
                                                                                   at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                   at android.os.Looper.loop(Looper.java:135) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Только вот, что тут можно увидеть?
9 июл 17, 11:35    [20626771]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 31070
Господин Уэф!,
Теперь чтобы узнать, влияет ли FTP на крах приложения - закомментировать в клике весь код и вывести в лог "Бла бла бла тест".
5 минут времени и скриншот сюда.
Ещё можете пошаговую отладку врубить. Обычные инструменты прогера - лог и пошаговая.

Модератор: Тема перенесена из форума "Java".
9 июл 17, 11:56    [20626804]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23335
Да тут и ежу понятно, что ТС лезет в сеть из основного потока.
Андроид этого не любит.
9 июл 17, 14:49    [20627054]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 31070
wadman
Да тут и ежу понятно, что ТС лезет в сеть из основного потока.
Андроид этого не любит.

может быть.
Я просто по логам навскидку не увидел ответа.
А учится автору логировать и банально тестить свой код не помешает.
9 июл 17, 14:53    [20627059]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Господин Уэф!
Member

Откуда:
Сообщений: 247
Petro123
Господин Уэф!,
Теперь чтобы узнать, влияет ли FTP на крах приложения - закомментировать в клике весь код и вывести в лог "Бла бла бла тест".

Это первым делом проверено "Бла бла тест" нормально выводится.
Т.е. дело именно в ftp

автор
Ещё можете пошаговую отладку врубить. Обычные инструменты прогера - лог и пошаговая.

Я чел старый, программировать учился еще на бумаге и наловчился на привычных инструментах обходиться без отладчиков.
Android Studio в глаза вижу с пятницы. Подскажете что и как включить?
9 июл 17, 17:02    [20627209]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23335
Господин Уэф!,

я ведь уже указал причину: все обращения к сети должны делаться из доп.потока.
9 июл 17, 17:13    [20627218]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
Господин Уэф!
Member

Откуда:
Сообщений: 247
wadman
я ведь уже указал причину: все обращения к сети должны делаться из доп.потока.

Спасибо, гуглю, но пока не нашел понятных примеров.
10 июл 17, 07:16    [20627819]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки с org.apache.commons.net.ftp в Android Studio  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23335
Господин Уэф!
wadman
я ведь уже указал причину: все обращения к сети должны делаться из доп.потока.

Спасибо, гуглю, но пока не нашел понятных примеров.

https://developer.android.com/training/basics/network-ops/connecting.html

Либо использовать готовые решения, как тут:
http://androidexample.com/FTP_File_Upload_From_Sdcard_to_server/index.php?view=article_discription&aid=98
http://www.sauronsoftware.it/projects/ftp4j/manual.php
10 июл 17, 09:15    [20627932]     Ответить | Цитировать Сообщить модератору
Все форумы / Android Ответить