4

Вопрос по twitter4j, android – undefined

Я делаю приложение, которое общается с Twitter, чтобы опубликовать твит. Моя проблема в том, что при компиляции моего кода я получаю сообщение об ошибке:

NoClassDefFoundError: twitter4j.TwitterFactory

Вот код, который публикует твит через onClickListener:

post.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Twitter twitter = new TwitterFactory().getInstance();  
            AccessToken a = new AccessToken("****", "****");
            twitter.setOAuthConsumer("****", "****");
            twitter.setOAuthAccessToken(a); 
            try {
                twitter.updateStatus("If you're reading this on Twitter, it worked!");
            } catch (TwitterException e) {
                e.printStackTrace();
            }   
        }
    });

Вот что я получил в своем logcat:

04-04 10:27:51.330: E/AndroidRuntime(12547): FATAL EXCEPTION: main
04-04 10:27:51.330: E/AndroidRuntime(12547): java.lang.NoClassDefFoundError: twitter4j.TwitterFactory
04-04 10:27:51.330: E/AndroidRuntime(12547):    at com.bintuu.updater.TwitterClass$3.onClick(TwitterClass.java:107)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.view.View.performClick(View.java:2485)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.view.View$PerformClick.run(View.java:9080)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.os.Handler.handleCallback(Handler.java:587)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.os.Looper.loop(Looper.java:130)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at android.app.ActivityThread.main(ActivityThread.java:3683)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at java.lang.reflect.Method.invokeNative(Native Method)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at java.lang.reflect.Method.invoke(Method.java:507)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-04 10:27:51.330: E/AndroidRuntime(12547):    at dalvik.system.NativeStart.main(Native Method)
  • Error: User Rate Limit Exceeded

    от AndroidDev
  • Error: User Rate Limit Exceeded

    от AndroidDev
  • Да, я это подтвердил, но все равно получаю ту же ошибку.

    от AndroidDev
  • Можете ли вы предоставить более подробную информацию об этой ошибке? Есть ли в нем трассировка стека? Можете ли вы быть более конкретным, чем говорить, что это происходит при компиляции кода? Eclipse подчеркивает его красным и выдает эту ошибку, или это происходит во время работы приложения?

    от elevine
  • Это те же самые шаги для проектов Android и простого Java.

    от elevine
  • Вы добавили банку Twitter4j в ваш путь к классам? Увидеть:vogella.de/articles/Eclipse/article.html#classpath_jar

    от elevine
  • Да, у меня есть. Тем не менее, я все еще испытываю ту же проблему. Этот учебник нацелен на простую Java. Я использую Android Java.

    от AndroidDev
5 ответов
  • 0

    Я знаю

    что он слишком старый, но для таких, как я, - проблема была решена путем включения в проект файлов jar log4j, slf4j и commons-logging, поскольку они используются ядром twitter4j.

  • 1

    У меня была такая же проблема с twitter4j

    и я ее решил. Просто после присвоения имени папке «libs», я создал «libs». папка, которая будет использоваться в качестве исходной папки, так что некоторые методы внутри могут быть доступны. Интересно, какова реальная химия позади этого !! но это все, теперь это работает для меня. Чтобы сделать его исходной папкой, просто щелкните ее правой кнопкой мыши и перейдите в раздел «путь сборки». а затем выберите & quot; Использовать как исходную папку & quot ;.

  • 1

    Создайте папку с именем libs внутри корневого каталога вашего

    спроектируйте и поместите банку twitter4j внутрь.

    Затем добавьте новую банку через Свойства проекта - & gt; Путь сборки Java - & gt; Библиотеки - & gt; Добавить банки.

    Удалите все старые ссылки на твиттеры jar4.

    Очистить и запустить.

  • 2

    Я нашел решение сейчас. Проблема заключалась в том

    что я использовал очень старую версию Twitter4j, и в моей папке libs было несколько jar с одинаковыми именами. Я сейчас исправил эти проблемы, и теперь он работает отлично.

  • 4

    попробуйте переименовать &

    quot; lib & quot; имя папки для "libs". Это решило аналогичную проблему для меня, проверьте здесь:https://github.com/ddewaele/AndroidTwitterSample/issues/2