Подтвердить что ты не робот

ClassNotFoundException: не нашел класс на пути: DexPathList

У меня проблема, так как я обновил свое приложение на PlayStore. Начиная с этого обновления исключение вызывается, но я не изменил ничего, связанное с этим исключением.

StackTrace:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{de.opiatefuchs.onthejobtimerlight/de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity}: java.lang.ClassNotFoundException: Didn't find class "de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity" on path: DexPathList[[zip file "/data/app/de.opiatefuchs.onthejobtimerlight-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2236)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ClassNotFoundException: Didn't find class "de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity" on path: DexPathList[[zip file "/data/app/de.opiatefuchs.onthejobtimerlight-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)
... 10 more
Suppressed: java.lang.ClassNotFoundException: de.opiatefuchs.onthejobtimerlight.OnTheJobTimerActivity
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 13 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Дело в том, что моя версия приложения работает без проблем, и я не изменил ничего, связанного с этой деятельностью. Я только что добавил новый информационный диалог, который не имеет ничего общего с этой деятельностью. Это приложение бесплатной версии Lite, я сделал то же самое в версии pro, и ничего не выбрасывается. Это работает так, как ожидалось. Единственное отличие между pro и lite заключается в том, что я интегрировал Admob (по-новому) в облегченной версии и лицензии Google Play в про версии. Но это я интегрировал с самого начала и не внес изменения в это. Я также не внес никаких изменений в манифест, я прочитал много сообщений здесь, но ничего не помогает.

Похоже, что это происходит в версиях Android с 5.0. Может ли кто-нибудь понять, что эта проблема может вызвать или имеет кого-то одно и то же? Возможно ли, что proguard просто уничтожил что-либо, запутывая (также здесь, никаких изменений)?

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

Этот вопрос отмечен как дубликат, но он не является. Комментарий со ссылкой не исправляет мою проблему, все библиотеки проверяются и интегрируются правильно. Кроме того, я не использую NDK.

4b9b3361

Ответ 1

Update

Спустя долгое время выяснилось, что это должно иметь какое-либо отношение к proguard. Я не могу сказать, что именно вызывает ошибка, но я немного попробовал, и это то, что я заметил (это в моем случае с Eclipse IDE):

  • Мне нужно закрыть каждую вкладку из проекта, который я хочу подписать
  • Мне нужно очистить проект и после очистки ничего не делать, кроме экспорта apk
  • внесение небольшого изменения в манифест, сохранить его и отменить изменение (и сохранить)
  • если в манифесте есть какой-либо класс с именем "YourClass" или ".YourClass", измените его на "com.yourpackage.yourClass"

Это четыре момента, которые я сделал, и затем это сработало. Это выглядит подозрительно, но я думаю, что есть проблема с запутыванием. Потому что, не делая этих точек, я могу просто скомпилировать свой apk и установить его из eclipse. Для меня нет очевидной причины такого поведения. Кроме того, имя пакета работает без изменений, если я его установлю только из eclipse. Надеюсь, эти моменты помогут кому-то.

Ответ 2

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

УДАЛИТЬ, ЧТО FOLDER .gradle.

Этот файл можно найти в папке проекта с помощью проводника файлов. Он имеет файлы артефактов, которые содержат это старое название проекта. После повторного открытия проекта в Android Studio папка будет воссоздана автоматически.

Ответ 3

Я только что изменил свой gradle с com.android.tools.build:gradle:2.2.2 на com.android.tools.build:gradle:2.2.0, и проблема в порядке!

Ответ 4

Для меня это произошло, когда было изменено имя пакета (имя каталога).

Я понял, что папка "build" волшебным образом поддерживает промежуточные файлы для сборки проекта. Я удалил папку "build" в папке "app" . Теперь gradle пришлось переделать все файлы с новым именем пакета. Теперь он работает правильно.

Ответ 5

Я думаю, что это имеет какое-то отношение к multidex и нескольким именам пакетов, если у вас несколько модулей. Очистите проект и удалите все сборки/папки.

Ответ 6

Иногда, когда мы создаем подписанный файл apk, если у нас есть проблема с библиотекой зависимостей (дублировать библиотеку jar), тогда эта ошибка может произойти. Проверьте путь сборки и удалите дублируемую библиотеку и проверьте, не проверена ли какая-либо библиотека на вкладке "Экспорт" и "Экспорт".

Ответ 7

Я получал схожую ошибку. я получил решение здесь.

Если ваш файл манифеста не является правильным, следуйте этим

Ответ 8

tl; dr: Это, по-видимому, вызвано сочетанием как относительного, так и абсолютного объявления в AndroidManifest.xml. Я считаю, что лучшим решением является использование относительных обозначений при объявлении <application .../>, <activity .../>, <receiver .../> и <service .../> в AndroidManifest.xml.

Полное объяснение:

У меня была эта проблема для TOO LONG, потому что я использовал как абсолютные, так и относительные объявления <application .../>, <activity .../>, <receiver .../> и <service .../> в моем AndroidManifest.xml. Вот что я сделал, чтобы исправить это:

В AndroidManifest.xml убедитесь, что в разделе <manifest .../> указано свойство package:, указанное правильно, оно должно быть точным абсолютным путем, например:

<manifest
    package="com.my.absolute.package.path"
    xmlns:android="http://schemas.android.com/apk/res/android">...</manifest>

Теперь, когда у вас есть правильный абсолютный путь, указанный в разделе <manifest .../>, вам нужно будет использовать относительный путь для всех <application .../>, <activity .../>, <receiver .../> и <service .../>, определенных в вашем AndroidManifest.xml.

<сильные > Примеры:

<application
    android:name=".BaseApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity
        android:name=".activity.SomeActivity"
        android:configChanges="orientation"
        android:label="@string/app_name"
        android:parentActivityName=".activity.ParentActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".activity.ParentActivity"/>
    </activity>

    <activity
        android:name=".activity.MyActivity"
        android:configChanges="orientation"
        android:label="@string/app_name"
        android:parentActivityName=".activity.ParentActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme"
        />

    <receiver
        android:name=".receivers.MyReceiver"
        android:enabled="true"
        android:exported="false">
    </receiver>

    <service
        android:name=".services.MyService"
        android:enabled="true"
        android:exported="false"
        />
</application>

Конечно, также обязательно очистите проект.

Ответ 9

Причина в том, что андроид не смог найти конкретную активность в dexpath.

Итак, мы должны предоставить весь путь действий в "файле манифеста".

например, ваше имя активности - "SplashActivity", и оно присутствует в "com.packagename.package". Поэтому мы должны предоставить полное имя пакета этого действия.

com.packagename.package.SplashActivity

Ответ 10

У меня была аналогичная проблема, здесь мое решение:

  • Измените имя приложения в AndroidManifest на полный путь
  • Очистить проект
  • Проект перестройки
  • Сборка APK

Ответ 11

Я добавил

compile "com.android.support:support-core-utils:25.3.1"
compile 'com.android.support:support-v4:25.3.1'

Ответ 12

Я получил аналогичную ошибку после изменения имени моего каталога, просто переименуя имя каталога и импорт. Не удалось установить больше. Ни повторная активация USB-отладки, ни восстановление проекта не выполняются.

Я решаю его, создавая новый проект и вручную копируя весь соответствующий контент в новый проект.