Библиотека Android Glide NoClassDefFoundError

Я неправильно использую библиотеку Glide? В чем может быть проблема?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageView iv = (ImageView) findViewById(R.id.imageView1);

    Glide.with(this).load(R.drawable.salads_caesar_salad).into(iv);
}

введите здесь описание изображения


person johnny manolly    schedule 14.07.2015    source источник
comment
Покажите свои зависимости Gradle   -  person EpicPandaForce    schedule 14.07.2015
comment
@EpicPandaForce, что скриншот LogCat - это представление Ecipse LogCat, я не думаю, что Gradle здесь замешан. Кроме того, приложение работает, поэтому оно должно находиться в пути к классам компиляции.   -  person TWiStErRob    schedule 11.08.2015


Ответы (4)


Если ваш код компилируется нормально, весьма вероятно, что у вас есть правильные зависимости от пути к классам компиляции. Если вы используете Android Studio/Gradle, возможно, ProGuard по какой-то причине каким-то образом удаляет класс Glide, но на самом деле этого не должно быть, потому что вы на самом деле его используете.

Приведенное выше противоречие и тот факт, что ваш снимок экрана LogCat относится либо к Eclipse ADT, либо к Android Device Monitor (monitor.bat), оставляет один вариант: вы не экспортировать свою зависимость; попробуйте следующее (см. скриншот в связанном руководстве):

  1. Щелкните правой кнопкой мыши проект приложения Android.
  2. Свойства
  3. Путь сборки Java
  4. Заказать и экспортировать
  5. убедитесь, что glide.jar отмечен галочкой

В качестве альтернативы рассмотрите возможность повторного создания вашего проекта в Android Studio (официальный продукт Google для разработки Android) или IntelliJ IDEA 14+ и копирование ваших исходников; Плагин IntelliJ для Android гораздо лучше поддерживает Android и современные инструменты сборки, чем Eclipse ADT. Я сам действительно был против перехода, но, как видите, он сработал, потому что теперь я за него выступаю. В долгосрочной перспективе это стоит усилий дня или двух.

person TWiStErRob    schedule 10.08.2015

Вам нужно добавить библиотеку Glide в свой проект Android.

Если вы используете градиент:

dependencies {
    compile 'com.github.bumptech.glide:glide:3.6.0'
    compile 'com.android.support:support-v4:19.1.0'
}

Если вы используете maven:

<dependency>
  <groupId>com.github.bumptech.glide</groupId>
  <artifactId>glide</artifactId>
  <version>3.6.0</version>
  <type>aar</type>
</dependency>
<dependency>
  <groupId>com.google.android</groupId>
  <artifactId>support-v4</artifactId>
  <version>r7</version>
</dependency>

Вы также можете добавить библиотеку непосредственно в свой проект в своем Eclipse: щелкните правой кнопкой мыши свойства вашего проекта, затем раздел «Библиотека», затем нажмите «Добавить», чтобы добавить библиотеку.

Если вы используете Android Studio: http://www.truiton.com/2015/02/android-studio-add-library-project/

person Garry    schedule 14.07.2015

кажется, вы неправильно импортируете библиотеку glide -

NoClassDefFoundError приводит к тому, что сборка Android не находит вашу библиотеку glide.

В студии Android вы можете добавить его в «структуру проекта», добавив скольжение библиотеки к своим зависимостям. Ознакомьтесь с общей стратегией здесь

person Coder55    schedule 14.07.2015

Я думаю, вы можете загружать только URL-адреса и использовать ресурсы только в методах .error() и .placeholder() в соответствии с их документацией. https://github.com/bumptech/glide

И зачем вам использовать скольжение, когда вы можете напрямую установить ресурс в изображении следующим образом:

iv.setImageResource(R.drawable.salads_caesar_salad);

Я надеюсь, что это помогает!

person Isaac Urbina    schedule 26.04.2016