Intereting Posts
Расположение стола для Android Мой проект Android Studio поддерживает запуск моего старого проекта / приложения Цепочные RxJava наблюдаемые с обратными вызовами / слушателями Android Geofencing (Polygon) Тема Holo не применяется к диалогам при использовании библиотеки holoeverywhere Android: уровни изоляции транзакций SQLite (ORMLite) Как получить или вычислить ширину / высоту раздутого вида Загрузить контактный образ в битмап Получить растровое изображение из макета Как протестировать поведение полного резервного копирования Android 6.0? Доступен ли SQL или общий доступ к файлам в основном потоке пользовательского интерфейса Android? Как кэшировать / сохранять пользовательский объект класса в Android? Как вы входите в режим fastboot для планшетов Allwinner A10 (ICS)? Как поддержать GESTURE, левое / правое скольжение, много эффектов перехода в приложении Android MapFragment, вызывающий NullPointerException при методе getMapAsync (this)

Добавить внешнюю банку в проект андроида в eclipse

Я создаю простой проект Android в eclipse, который использует google-api-java-client . Я пытаюсь следовать этому руководству, чтобы запустить его. Я искал SO для ответов о том, как добавить JAR в проект Android в Eclipse. Большинство из них рекомендуют добавлять JAR в папку lib/ в проекте Android, а затем добавлять эти JAR в путь сборки проекта. Я сделал эти две вещи. Проект компилируется отлично (в любом случае Eclipse не жалуется на какие-либо ошибки). Но когда я запускаю приложение Android в своем эмуляторе, я получаю ClassDefNotFoundError всякий раз, когда пытаюсь создать экземпляр любого класса в JAR- ClassDefNotFoundError google-api-java-client . Например

 new com.google.api.client.http.apache.ApacheHttpTransport(); 

ClassDefNotFoundError .

Вот код, который вызывает ошибку:

 package com.mycom.android; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; public class SearchRunner implements OnClickListener { private static final String API_KEY = "AIzaSyA1Mg3xWXfoov4HdPUzYY2NwTxuvCev1-E"; private static final String PLACES_SEARCH_URL = ""; @Override public void onClick(View v) { EditText editText = (EditText) v; String searchText = editText.getText().toString(); runSearch(searchText); } protected void runSearch(String searchText) { new com.google.api.client.http.apache.ApacheHttpTransport(); } } 

Вот более полный вывод из Eclipse LogCat:

 12-21 15:42:11.402: E/dalvikvm(3412): Could not find class 'com.google.api.client.http.apache.ApacheHttpTransport', referenced from method com.mycom.android.SearchRunner.runSearch 12-21 15:42:11.402: W/dalvikvm(3412): VFY: unable to resolve new-instance 70 (Lcom/google/api/client/http/apache/ApacheHttpTransport;) in Lcom/mycom/android/SearchRunner; 12-21 15:42:11.402: D/dalvikvm(3412): VFY: replacing opcode 0x22 at 0x0000 12-21 15:42:11.402: D/dalvikvm(3412): DexOpt: unable to opt direct call 0x00ca at 0x02 in Lcom/mycom/android/SearchRunner;.runSearch 12-21 15:42:11.682: I/MapActivity(3412): Handling network change notification:CONNECTED 12-21 15:42:11.682: E/MapActivity(3412): Couldn't get connection factory client 12-21 15:42:11.791: D/gralloc_goldfish(3412): Emulator without GPU emulation detected. 12-21 15:42:12.532: D/dalvikvm(3412): GC_CONCURRENT freed 102K, 3% free 10520K/10823K, paused 5ms+7ms 12-21 15:42:18.422: D/AndroidRuntime(3412): Shutting down VM 12-21 15:42:18.422: W/dalvikvm(3412): threadid=1: thread exiting with uncaught exception (group=0x409951f8) 12-21 15:42:18.482: E/AndroidRuntime(3412): FATAL EXCEPTION: main 12-21 15:42:18.482: E/AndroidRuntime(3412): java.lang.NoClassDefFoundError: com.google.api.client.http.apache.ApacheHttpTransport 12-21 15:42:18.482: E/AndroidRuntime(3412): at com.mycom.android.SearchRunner.runSearch(SearchRunner.java:20) 

Solutions Collecting From Web of "Добавить внешнюю банку в проект андроида в eclipse"

Я решил проблему, следуя этим инструкциям шаг за шагом. Когда я изначально начал создавать проект:

  1. Я импортировал файлы JAR из проекта google-api-java-client в папку lib/ проект моего проекта
  2. Я щелкнул правой кнопкой мыши lib/google-api-client... и выбрал Путь сборки> Добавить для сборки пути

На данный момент в Eclipse в разделе «Справочные библиотеки» моего проекта появляется множество библиотек:

 jsr305-1.3.9.jar gson-1.7.1.jar guava-r09.jar junit-4.8.2.jar httpclient-4.0.3.jar httpcore-4.0.1.jar commons-logging-1.1.1.jar commons-codec-1.3.jar jackson-core-asl-1.9.1.jar xpp3-1.1.4c.jar protobuf-java-2.2.0.jar google-http-client-1.6.0-beta.jar google-oauth-client-1.6.0-beta.jar google-api-client-1.6.0-beta.jar 

Однако, когда я перешел в Project> Properties> Java Build Path> Libraries, я увидел, что был указан только google-api-client... Когда я попытался запустить проект, я получил NoClassDefFounError для ApacheHttpTransport , как указано в исходном сообщении. Это связано с тем, что этот класс определен в google-http-client !. Путем ручного добавления google-http-client в путь сборки проблема решена.

Извлеченный урок: только потому, что JAR указан в «Связанных библиотеках» проекта Eclipse, это не означает, что JAR включены в путь сборки проекта.

Может быть, импорт? Ctrl + shift + o что-нибудь делает?

Если нет, я не уверен, что вы должны создать экземпляр хорошего класса, с этой ошибкой

Да разместите банку в папке lib и добавьте проект в путь сборки (раздел свойств вашего проекта). Eclipse будет очищаться и строить после. Вы должны увидеть используемый файл jar, поскольку он появится в «библиотеках», В библиотеке Android.

Для ссылки используйте импорт some.package.com. Поскольку letroll говорит, что ctrl + shift + o должен сортировать импорт для вас.