Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
zoleg
14 / 14 / 1
Регистрация: 10.01.2012
Сообщений: 140
#1

Could not find class 'javax.naming.directory.InitialDirContext' - Программирование Android

14.07.2015, 16:39. Просмотров 831. Ответов 4
Метки нет (Все метки)

Чувствую пятым чудом, что при попытке освоения Java «на живой» практике, не там и не так пытаюсь запустить коннект клиента к жаберу. ООП вводит мозг в конгнитивный диссонанс. с устоявшимися привычками.

Помогите нубу запустить smack на регистрацию.

Что не так и как с этим бороться?
Код компилится, запускается, в работе дает :
Could not find class 'javax.naming.directory.InitialDirContext', referenced from method org.jivesoftware.smack.util.dns.javax.JavaxResolver.<clinit>
VFY: unable to resolve new-instance 7392 (Ljavax/naming/directory/InitialDirContext in Lorg/jivesoftware/smack/util/dns/javax/JavaxResolver;
VFY: replacing opcode 0x22 at 0x000c
Кажется все перерыл ответов очень мало и все мутные.
Что то иностранецы на импортных форумах написал один, мол это потому что процесс идет в ядре smask, второй что это вызывается в другом окружении, но толком не объясняют как с этим бороться, заканчивают на констатацией факта.
Что и на чем: Ubuntu, java 8, Android Studio 1.2.2, Smack 4.0.1

Что я делаю:

1. Из Активити вызываю startActivityForResult
2 получаю в onActivityResult логин, пароль, сервер Все проходит
3. Дергаю setJabberConfig в котором устанавливаю полученные данные как значение глобальных переменных.
4. Из setJabberConfig запускаю ранабл класс в котором нарисован коннект юзающий данные глобальных значений.

Коннект не проходит. Чувствую что наверно нужно дергать с другого конца. Ну типа из листнера какого или сервиса? Но как правильно это сделать не знаю.

Итак, предоставляю быдлокод начиная с шага 3.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    super.onActivityResult(requestCode, resultCode, data);
 
    if (requestCode == TetGlobalData.JAB_LOGIN_ACTIVITY) {
        if (resultCode == RESULT_FIRST_USER) {
            /////////////////Эксперементы////////////////////
            android.util.Log.d("TetMainActivity", "!!!!!!!!!!!!!!!!! DEBUG DELETE AFTER ALL!!!  jabserver "  + data.getStringExtra("jabserver")+ " jabuser " + data.getStringExtra("jabuser") + " jabpassword "+data.getStringExtra("jabpassword") +" jabdisp "+data.getStringExtra("jabdisp")+"");
            //////////////////////////////////////////////////
            setJabberConfig tryjabberdlogin = new setJabberConfig(resultCode,data);
           //if (!tryjabberdlogin)
        }
        if (resultCode == RESULT_OK){
        }
        if (resultCode == RESULT_CANCELED) {
            //Write your code if there's no result
            //String jserver = data.getStringExtra("jabserver");
        }
        startService(new Intent(this, ProcessingService.class));
    }
}
Тут ставлю якобы «глобальные переменные».

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class setJabberConfig {
 
    //private static final Object JPORT = 5222;
    private String outcoming_message;
    private int RequestCode;
 
    private String jserver;
    private String juser;
    private String jpassw;
    private String jdisp;
    startFirstJaberLoging start;
    public setJabberConfig() {
    }
 
 
    public setJabberConfig(int resultCode, Intent data){
        synchronized (this) {
            RequestCode = resultCode;
            outcoming_message = null;
        }
        if ( resultCode == TetGlobalData.RESULT_FIRST_USER) {
            jserver = data.getStringExtra("jabserver");
            juser = data.getStringExtra("jabuser");
            jpassw = data.getStringExtra("jabpassword");
            jdisp = data.getStringExtra("jabdisp");
        } else {
            //SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getString());
        }
        TetGlobalData.JBS = jserver;
        TetGlobalData.JBU = juser;
        TetGlobalData.JBP = jpassw;
        TetGlobalData.JBC = jdisp;
        /////////////////Эксперементы////////////////////
        android.util.Log.d("setJabberConfig", "!!!!!!!!!!!!!!!!! DEBUG DELETE AFTER ALL!!!  jabserver "  +TetGlobalData.JBS+ " jabuser " + TetGlobalData.JBU + " jabpassword "+TetGlobalData.JBP +" jabdisp "+TetGlobalData.JBC+"");
        //////////////////////////////////////////////////
        start = new startFirstJaberLoging();
        start.run();
 
    }
Ну и наконец сам коннект.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
public class startFirstJaberLoging implements Runnable{
 
    AbstractXMPPConnection jConnection;
 
    public void startFirstJaberLoging(){
        new AndroidSmackInitializer().initialize();
        run();
    }
 
 
    public void login(String JABBERSERVER, int JABBERPORT, String JABBERDUSER, String JABBERDPASSWD)
            throws XMPPException {
        XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
        config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
        config.setUsernameAndPassword(JABBERDUSER + "@" + JABBERSERVER, JABBERDPASSWD);
        config.setServiceName(JABBERSERVER);
        //config.setHost(JABBERSERVER);
        config.setPort(JABBERPORT);
        config.setDebuggerEnabled(true);
        // config.setSocketFactory(SSLSocketFactory.getDefault());
        config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
        config.build();
        AbstractXMPPConnection jConnection = new XMPPTCPConnection(config.build());
        /////////////////Эксперементы////////////////////
        android.util.Log.d("startFirstJaberLoging", "!!!!!!!!!!!!!!!!! DEBUG DELETE AFTER ALL!!! Befor.connect " + JABBERSERVER + " jaberport " + JABBERPORT + " ");
        //////////////////////////////////////////////////
 
        try
 
        {
 
            jConnection.connect();
            /////////////////Эксперементы////////////////////
            android.util.Log.d("startFirstJaberLoging", "!!!!!!!!!!!!!!!!! DEBUG DELETE AFTER ALL!!!  after mConnection.connect " + JABBERSERVER + " jaberport " + JABBERPORT + " ");
            //////////////////////////////////////////////////
            if (!jConnection.isConnected()) {
                //If not connected
                /////////////////Эксперементы////////////////////
                android.util.Log.d("startFirstJaberLoging", "!!!!!!!!!!!!!!!!! DEBUG DELETE AFTER ALL!!! If not connected jabserver " + JABBERSERVER + " jaberport " + JABBERPORT + " ");
                //////////////////////////////////////////////////
            }
            /////////////////Эксперементы////////////////////
            android.util.Log.d("startFirstJaberLoging", "!!!!!!!!!!!!!!!!! DEBUG DELETE AFTER ALL!!! If connected OK but befor login jabserver " + JABBERSERVER + " jaberport " + JABBERPORT + " jabuser " + JABBERDUSER + " jabpassword " + JABBERPORT + " ");
            //////////////////////////////////////////////////
            jConnection.login();
            /////////////////Эксперементы////////////////////
            android.util.Log.d("startFirstJaberLoging", "!!!!!!!!!!!!!!!!! DEBUG DELETE AFTER ALL!!! If login OK jabserver " + JABBERSERVER + " jaberport " + JABBERPORT + " jabuser " + JABBERDUSER + " jabpassword " + JABBERPORT + "  ");
            //////////////////////////////////////////////////
        } catch (SmackException | IOException |
                XMPPException e
                )
 
        {
            System.out.println("Exception at SmackCcsClient.init()");
            e.printStackTrace();
        }
    }
 
    public void run() {
        try {
            android.util.Log.d("startFirstJaberLoging","jabber thread try to login");
            login(TetGlobalData.JBS, TetGlobalData.JPORT, TetGlobalData.JBU, TetGlobalData.JBP);
 
//            Thread jabberListenerThread=new Thread(new JabberListenerThread(connection));
//            jabberListenerThread.start();
//            Thread jabberSenderThread=new Thread(new JabberSenderThread(connection));
//            jabberSenderThread.start();
            //Data.tryLogin();
        } catch (XMPPException e) {
            e.printStackTrace();
//          this.stopSelf();
        }
    }
 
}
Добавлено через 23 часа 16 минут
Наконец загнав в депенсес всякую хрень от smack, клещами вытянул более или менее понятную инфу
Warningependency xpp3:xpp3:1.1.4c is ignored for debug as it may be conflicting with the internal version provided by Android.
trouble processing "javax/xml/namespace/QName.class":Ill-advised or mistaken usage of a core class (java.* or javax.*) when not building a core library. This is often due to inadvertently including a core library file in your application's project, when using an IDE (such as Eclipse). If you are sure you're not intentionally defining a core class, then this is the most likely explanation of what's going on.
Теперь просьба на пальцах объяснить кто такой jarjar и чем его запивают.

Ну, в смысле что ему и как скармливать.

Добавлено через 40 минут
Вот сижу и думаю, а не проще вообще грохнуть лишний QName.class ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2015, 16:39     Could not find class 'javax.naming.directory.InitialDirContext'
Посмотрите здесь:

Ошибка Could not find class 'android.os.PersistableBundle' - Программирование Android
В общем, такая беда.. Я не так давно начал кодить для Андроида, но до сих пор все было хорошо. Запускал приложение всегда не через...

Java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.chimera.GmsModuleInitializer" - Программирование Android
java.lang.ClassNotFoundException: Didn't find class &quot;com.google.android.gms.chimera.GmsModuleInitializer&quot; on path:...

Java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation - Программирование Android
Здравствуйте. При динамической загрузке кода столкнулся с такой ошибкой: E/AndroidRuntime(27808): Caused by:...

Ошибка: open failed: ENOENT (No such file or directory) - Программирование Android
Кто нибудь сталкивался с такой ошибкой: open failed: ENOENT (No such file or directory) Что это значит? программа не вылетает, но...

Class R - Программирование Android
Начал заниматься недавно, поэтому за глупые вопросы не пинайте) Вопрос в следующем, вернее проблема. В создаваемых проектах напрочь...

Фиксированный R class - Программирование Android
Здрасвствуйте! Возможно ли зафиксировать конкретные предопределенные значения для некоторых полей R класса? Если можно как это...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
14.07.2015, 21:25     Could not find class 'javax.naming.directory.InitialDirContext' #2
Все просто, в android нет доступа к пакету javax.
Юзай smack 4.1+.
zoleg
14 / 14 / 1
Регистрация: 10.01.2012
Сообщений: 140
14.07.2015, 21:51  [ТС]     Could not find class 'javax.naming.directory.InitialDirContext' #3
Поставил 4.1.2 Но тоже самое получил.
Путем научного тыка порешил удалить jar c кличкой smack-java7
Пошел коннект. Как к этому приполз уже не помню, столько эксперементировал, что забыл что как и когда вдруг получалось.

Но похоже до сервера не может добраться. Как ловить сообщение из NetworkOnMainThreadException

org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: 'brd.tet-a-tet.mobi:5222' failed because android.os.NetworkOnMainThreadException ?
07-14 18:45:00.814 26151-26151/mobi.tet_a_tet.atda W/System.err﹕ at org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: 'brd.tet-a-tet.mobi:5222' failed because android.os.NetworkOnMainThreadException
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
14.07.2015, 22:09     Could not find class 'javax.naming.directory.InitialDirContext' #4
zoleg, ну это просто. В отдельный поток вынести коннект.
http://habrahabr.ru/post/145092/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2015, 22:36     Could not find class 'javax.naming.directory.InitialDirContext'
Еще ссылки по теме:

ExpandableListView - cannot inflate class - Программирование Android
Есть layout, на нем размещен ExpandableListView. Когда к нему применяешь свою тему оформления, выскакивает ошибка - cannot inflate class...

Сохранение arraylist<class> в памяти устройства - Программирование Android
Добрый день! Подскажите, как привильно сохрянать список с классами? Как я понимаю надо смотреть в сторону SQLite? Допустим класс книга,...

Обработчики событий в новом(своем) class - Программирование Android
Ребят, день добрый! Столкнулся с такой проблемой, как навязать события view элементам в своем class, т.е : Например создаю свой Class A ...

Как вызвать private class из public метода - Программирование Android
Задача обновить блок try..catch после возобновления Painting'a private class LoadFeedTaskUrl extends AsyncTask&lt;URL, Void,...

Ошибка javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter - Java
Целый день немогу ошибку исправить. javax.naming.NoInitialContextException: Need to specify class name in environment or system...

could not find the main class - Java
Всем доброго времени суток есть такая проблема: запускаю приложение (бот для игры), а мне выдает ошибку could not find the main class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zoleg
14 / 14 / 1
Регистрация: 10.01.2012
Сообщений: 140
14.07.2015, 22:36  [ТС]     Could not find class 'javax.naming.directory.InitialDirContext' #5
Еще одно спасибо нажал.
Yandex
Объявления
14.07.2015, 22:36     Could not find class 'javax.naming.directory.InitialDirContext'
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru