Не удалось найти класс по пути: DexPathList в библиотеке Android
Я работаю над библиотекой Android, чтобы смоделировать некоторую работу над моим приложением, и я использую модификацию для использования некоторых веб-API.
Когда я компилирую и использую его в моем примере приложения (компилирование модуля библиотеки) в том же проекте Android Studio, все работает нормально, но когда я использую библиотеку из артефакта, я получаю ошибку Didn't find class on Path....
Мой файл gradle.build содержит это
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.+"
testCompile "org.hamcrest:hamcrest-core:1.3"
testCompile "org.hamcrest:hamcrest-library:1.3"
testCompile 'org.robolectric:robolectric:3.0'
}
Я пытался с Retrofit и Retrofit2, но я все еще получил тот же сбой в моем приложении, реализующем библиотеку
Caused by: java.lang.ClassNotFoundException: Didn't find class "okhttp3.logging.HttpLoggingInterceptor" on path: DexPathList[[dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-support-annotations-23.3.0_471cb7629dd1bd2eaf19897f0bfa2e292d59a1a2-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_9-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_8-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_7-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_6-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_5-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_4-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_3-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_2-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_1-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-slice_0-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-mx.segundamano.android-payments-library-0.1-SNAPSHOT_afd67b66a26310987e26f412f53082c415795025-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-internal_impl-23.3.0_ffb5ab0b136af54fef26d794f3208310ca6ef941-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-com.android.support-support-vector-drawable-23.3.0_2834a08897c09d9f4cf6a603048125bd86044324-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-com.android.support-support-v4-23.3.0_0fe06b17a4b2ae866e5066f3ea5bc8d596bd609e-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-com.android.support-multidex-1.0.1_9e5a739896463403b4d643ff254bf74dcc98371f-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-com.android.support-appcompat-v7-23.3.0_eba794855dfef17238864c6651afded84f82cf47-classes.dex", dex file "/data/data/mx.segundamano.paymentsdemo/files/instant-run/dex/slice-com.android.support-animated-vector-drawable-23.3.0_41e987bda5b0c3ecdbb65ba4dfa7c24496152077-classes.dex"],nativeLibraryDirectories=[/data/app/mx.segundamano.paymentsdemo-1/lib/arm64, /vendor/lib64, /system/lib64]]
05-11 11:40:03.737 4279 4279 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.j
2 ответа
Вот так я решил свою проблему!
Моя проблема была не в приложении, а в моей библиотеке, я неправильно поставил задачу публикации в своем файле Gradle. Вот как вы должны сделать это для Bintray.
task generateSourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier 'sources'
}
artifacts {
archives generateSourcesJar
}
bintray {
...
configurations = ['archives']
}
Проверьте в своей инфраструктуре, как вы должны добавлять зависимости в вашу библиотеку.
Я думаю, что это простая проблема для Android Studio: на всякий случай упорядочить импорт в правильном порядке, а затем очистить и собрать проект.
Это решило проблему для меня
Сегодня я тоже столкнулся с той же проблемой. Когда я просмотрел документацию, предоставленную Github, я заметил, что из-за некоторых изменений вы столкнетесь с этой ошибкой. Эта ошибка, вероятно, возникнет, если вы используете версию дооснащения 2.7.0 (как и в моем случае, я также использую версию дооснащения. Поэтому для решения проблемы я выполнил следующие шаги:
Я добавил поддержку Java версии 8 в свой проект Android, чтобы добавить поддержку Java версии 8. откройте файл Gradle уровня проекта и внутри скобки Android добавьте код ниже.
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
И в том же файле gradle добавьте также указанную ниже зависимость
implementation "com.squareup.okhttp3:okhttp:3.13.1"
Зачем вносить указанные изменения, кратко указано в приведенной ниже ссылке.
Нажмите, чтобы узнать больше о дополнительной информации
Надеюсь, это поможет и сэкономит время.
Попробуй это,
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}