it-swarm.com.ru

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

10-22 15:29:40.897: E/AndroidRuntime(2561): FATAL EXCEPTION: main
10-22 15:29:40.897: E/AndroidRuntime(2561): Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.gvg.simid/com.gvg.simid.Login}: Java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[Zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2137)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2261)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Android.app.ActivityThread.access$600(ActivityThread.Java:141)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1256)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Android.os.Handler.dispatchMessage(Handler.Java:99)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Android.os.Looper.loop(Looper.Java:137)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Android.app.ActivityThread.main(ActivityThread.Java:5103)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Java.lang.reflect.Method.invokeNative(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Java.lang.reflect.Method.invoke(Method.Java:525)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:737)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:553)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at dalvik.system.NativeStart.main(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561): Caused by: Java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[Zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:53)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Java.lang.ClassLoader.loadClass(ClassLoader.Java:501)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Java.lang.ClassLoader.loadClass(ClassLoader.Java:461)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Android.app.Instrumentation.newActivity(Instrumentation.Java:1061)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2128)
10-22 15:29:40.897: E/AndroidRuntime(2561):     ... 11 more

Я не совсем уверен, что является причиной этого, так как он правильно указан в манифесте:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.gvg.simid"
    Android:versionCode="1"
    Android:versionName="1.0" >

    <uses-sdk
        Android:minSdkVersion="8"
        Android:targetSdkVersion="18" />

    <uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />
    <uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission Android:name="Android.permission.BLUETOOTH" />
    <uses-permission Android:name="Android.permission.BLUETOOTH_ADMIN" />
    <uses-permission Android:name="Android.permission.CAMERA"/>
    <uses-permission Android:name="Android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission Android:name="Android.permission.INTERNET" />
    <uses-permission Android:name="Android.permission.READ_LOGS" />
    <uses-permission Android:name="Android.permission.READ_OWNER_DATA" />
    <uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
    <uses-permission Android:name="Android.permission.RECORD_AUDIO"/>
    <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission Android:name="Android.permission.WRITE_OWNER_DATA" />
    <uses-permission Android:name="Android.permission.WRITE_SETTINGS" />
    <uses-permission Android:name="Android.permission.WAKE_LOCK" />

    <uses-feature Android:name="Android.hardware.usb.Host" />

    <application
        Android:allowBackup="true"
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@style/AppTheme" >
        <activity
            Android:name="com.gvg.simid.Login"
            Android:label="@string/app_name" 
            Android:screenOrientation="landscape">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Я также добавил «Частные библиотеки Android» для построения пути и переместил его в начало «Порядка и экспорта», но он все еще выдал мне ту же ошибку.

Правка: я полностью перестроил проект, и не смог воспроизвести ошибку. Не уверен, что это было причиной.

86
Phito

У меня была та же проблема для моего проекта. Это произошло из-за конфликта в версии библиотеки поддержки Android между моим проектом и проектом библиотеки, который я добавил в свой проект. Поместите ту же версию библиотеки поддержки Android в ваш проект и библиотечные проекты, которые вы включили, и очистите сборку ... Все будет работать ...

71
Balaji Dhanasekar

Этот следующий метод работал для меня. Щелкните правой кнопкой мыши на project и выберите properties. Откроется панель «Свойства для». Из меню слева перейдите к Java Build Path -> Order and Export . В списке ниже снимите флажок рядом с "Android Dependencies". Наконец clean your project и запустить.

Надеюсь, что это работает

32
Chris

Для тех из вас, у кого возникла эта проблема в Android Studio, у меня была такая же проблема после слияния, и по какой-то причине она сохранилась даже после операций clean и invalidate cash/restart, что сводило меня с ума.

Оказывается, это можно исправить, запустив gradle build один раз из командной строки. Просто запустите следующую директорию проекта:

./gradlew assemble clean
./gradlew assemble

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

11
Iman Akbari

Если вы используете Eclipse, попробуйте Project -> Clean

9
Danilo Silva

У меня была такая же проблема, это работало на меня 

1) Полный путь деятельности проявляется вместо относительного пути.

2) Удалить папку «build» и очистить проект.

8
Ram Mehar Deswal

Это происходит, если мы изменим путь сборки приложения, это может быть в любом случае добавления или удаления или изменения библиотек или файла .jar. Лучшее решение - Перезапустить Eclipse.

7
pioneerBhawna

Если вы получаете эту ошибку при использовании новой функции Instant Run в Android Studio 2.0 и выше, то это своего рода ошибка на их стороне.
Чтобы это исправить, вам придется вручную остановить приложение на устройстве/эмуляторе, если оно не было остановлено, то в Android Studio выберите BuildRebuild Project,.
Затем нажмите кнопку Выполнить или SHIFT + F1

6
vovahost

Для любого, у кого есть multidex enable, напишите это

внутри build.gradle

apply plugin: 'com.Android.application'

Android {
 defaultConfig {
      multiDexEnabled true
  }
 dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile 'com.Android.support:appcompat-v7:+'
    compile 'com.google.Android.gms:play-services:+'
    compile 'com.Android.support:multidex:1.0.1'
}

напишите класс EnableMultiDex как ниже

import Android.content.Context;
import Android.support.multidex.MultiDexApplication;

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
}

и в AndroidManifest.xml напишите это className внутри тега приложения

 <application
    Android:name="YourPakageName.EnableMultiDex"
    Android:hardwareAccelerated="true"
    Android:icon="@drawable/wowio_launch_logo"
    Android:label="@string/app_name"
    Android:largeHeap="true"
    tools:node="replace">
5
Manohar Reddy

В моем случае это был процесс минимизации Proguard, который удалил некоторые важные классы из моего рабочего apk.

Решением было отредактировать файл proguard-rules.pro и добавить следующее:

-keep class com.someimportant3rdpartypackage.** { *; }
4
BeFree

1) Создать папку libs в корневом каталоге проекта. 
2) Скопируйте и вставьте в него файл jar
3) Настроить путь сборки (добавить jar)
4) Очистить и запустить

ура :-)

3
dheeran

Если вы используете Multidex на Android 4.4 и более ранних версиях, ваша проблема может заключаться в том, что ваш класс активности находится во втором файле dex и, следовательно, не найден системой Android.

Чтобы сохранить ваш класс активности в основном файле dex, смотрите эту страницу:

https://developer.Android.com/studio/build/multidex.html#keep


Чтобы узнать, какие классы находятся в файле dex , используйте Android Studio.

Просто перетащите апк в Android Studio. Вы должны быть в состоянии видеть ваши файлы dex в apk Explorer.

Затем выберите файл dex, чтобы увидеть, какие классы находятся внутри.


другой альтернативой является dexdump:

Вы можете проверить содержимое ваших файлов dex, содержащихся в вашем apk, используя команду dexdump, которую можно найти в

Android-SDK/строить-инструменты/27.0.3/dexdump

Для пользователей Windows это инструмент Я сделал, чтобы облегчить процесс

2
BenBenMushi

Однажды я столкнулся с этой ошибкой, когда определил класс, который расширил представление, но ссылался на это настраиваемое представление в файле макета с неправильным именем. Вместо <com.example.customview/> я включил <com.customview/> в файл макета XML.

2
Price

Верьте мне или нет ... Я опробовал почти каждый ответ, который я нашел здесь на stackoverflow. Ничего не поможет, пока я просто не перезапущу машину. Моя Android Studio работает на Ubuntu 16.04 LTS.

2
Piotr Miller

Я столкнулся с той же проблемой и заметил, что пример кода был помещен в каталог «Java» вместо каталога «src» . После перемещения кода в src проблема была решена.

Также убедитесь, что каталог приложения разделен на несколько папок . Например. /main/com/site/appname/ не /main/com.site.appname/

Надеюсь, это работает ~

2
weiweia

У меня недавно была эта проблема, и я использую Android Studio 0.8.4

Проблема заключалась в том, что я решил переименовать файл макета меню XML, который назывался main.xml.

Щелкните правой кнопкой мыши по нему и выберите Refactor -> Rename . Перед переименованием обязательно снимите флажок«Поиск в комментариях и строках»и нажмите Refactor

Поскольку мой файл изначально назывался 'main', он переименовал критические пути в app.iml и build.gradle, главным образом в Java.srcDirs в build.gradle, поскольку путь определен как 'src/main/Java'.

Я надеюсь, что это поможет любому, кто может столкнуться с этой проблемой.

1
GoranZarkovic

У меня была такая же проблема на Windows. Я переименовал путь к проекту во что-то, содержащее пробел. 

Убедитесь, что путь к вашему проекту не содержит пробелов.

1
Vincent Hubert

У меня была эта проблема после обновления с версии 18 . После обновления у меня было следующее: Project Build Target было 5.01, targetSDKVersion = 21

Но: Инструменты сборки были все еще из Android 4.3.1 (18) Я заметил, что те приложения, которые извлекали свои действия из ActionBarActivity, выходили из строя с вышеуказанной ошибкой те, которые еще не работали.

Таким образом, простым исправлением было использование последних Android SDK Build Tools 21.1.2 Вместо только тех из Android SDK Build Tools 18, которые кажутся по умолчанию.

Таким образом, виновником кажется библиотека Appcompat, которую я использую для обратной совместимости Actionbar.

И между прочим: используя библиотеку appcompat, мне пришлось установить/исправить: $SDKInstallDIR$\Android\android-sdk\extras\Android\support\v7\appcompat\project.properties target=Android-21 (который был рекомендован в каком-то другом полезном посте и который по умолчанию имеет значение 19))

1
Peter Rudnik

Решение, упомянутое здесь -> Решение Multidex Issue работало для меня. Вот что нужно добавить в контекст приложения:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
1
Pranaysharma

Я столкнулся с той же проблемой и решил ее, выполнив следующие действия:

В меню сборки выберите

1- чистый проект.

2- Сборка APK.

1
Aaeb

На всякий случай, если кто-то сталкивается с той же проблемой, что и я, и не предлагает Здесь ответ помогает.

Для меня причина была в том, что в рефакторе студии Android глючил . Я переместил внутренний класс за пределы класса, который был View, и поэтому Также имел xml, где был установлен прямой путь. Этот путь не получит Рефакторинг студии! И никакая ошибка не будет выброшена. 

Надеюсь, это кому-нибудь поможет. Приветствия.

0
JacksOnF1re

У меня была эта проблема довольно долгое время, и, как и все остальные, ответы выше не относились к моему проекту. 

В моем проекте я связал проект с моим проектом, и он вызывал ClassDefNotFoundError каждый раз, когда выполнялся какой-то код для другого проекта. 

Так что это было мое решение. Я пошел к свойствам проекта моего проекта и пути сборки Java. Запрессовал «Source» -tab и «link source» из src-папки другого проекта в мой собственный проект и назвал новую папку «core-src». 

Надеется, что это решение кому-то поможет

0
user3906863

Я просто перезапустил устройство и запустил приложение. Работало без проблем. Надеюсь, это поможет кому-то :)

0
Kameswari

Я обнаружил эту ошибку в Android Studio при попытке выполнить отладку на устройстве с API 23 , поэтому я проверил Android Studio и заметил, что я не установил эту версию API 23. После установки я решил проблему.

0
Rodrigo Celebrone

Java.lang.RuntimeException: невозможно создать экземпляр приложения com.Android.tools.fd.runtime.BootstrapApplication: Java.lang.ClassNotFoundException: не найден класс «com.Android.tools.fd.runtime.BootstrapApplication» по пути:/data/app.apk (в Android 4.3, 4.1)

Невозможно создать экземпляр приложения com.Android.tools.fd.runtime.BootstrapApplication: Java.lang.ClassNotFoundException: com.Android.tools.fd.runtime.BootstrapApplication (внизу Lollipop iam сталкивается с этой ошибкой)

Чтобы отключить мгновенный запуск, он будет работать нормально, следуя приведенным ниже инструкциям, чтобы отключить мгновенный запуск в Android Studio 1. Перейдите в «Настройки файла» -> «Сборка, выполнение, развертывание» -> «Мгновенный запуск» ---> снимите флажок «Включить мгновенный запуск»

0
Kishore Reddy

Если вы добавили новый Library Project как модуль в свой проект Android и используете Kotlin в своей библиотеке не забудьте добавить  

apply plugin: 'kotlin-Android'

в начало файла Gradle вашего модуля. Android Studio не добавляет эту строку, когда вы создали новый модуль, и это может тратить ваши часы, как и я.

0
savepopulation

В нашем случае мы хотели скомпилировать версию Vagrant и имели ту же ошибку. Мы исправили это с помощью clean project и rebuild project в меню Build

0
Rafael

У меня была эта проблема несколько раз, и часто я не делал что-то явно не так с зависимостями. 

Всегда полезно проверить, присутствует ли этот класс «not found» в последнем apk. Если это так, как это было в моих случаях, проблема обычно заключается в следующем:

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

Проверьте, доступен ли расширяемый вами класс, и попробуйте соответствующим образом исправить сценарий сборки или зависимости.

0
michalbrz

У меня была эта проблема, вызванная несколькими причинами, но я вижу это в вашей трассировке стека "**Unable to instantiate activity ComponentInfo{...}: Java.lang.ClassNotFoundException: Didn't find class "..." on path: DexPathList[[**", я обнаружил разницу в моем .classpath, прежде чем он перестал работать.

 <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="com.Android.ide.Eclipse.adt.Android_FRAMEWORK"/>
    <classpathentry kind="con" path="com.Android.ide.Eclipse.adt.LIBRARIES"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

Я добавил строку: 

<classpathentry exported="true" kind="con" path="com.Android.ide.Eclipse.adt.DEPENDENCIES"/>

это окончательная версия:

  <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="com.Android.ide.Eclipse.adt.Android_FRAMEWORK"/>
    <classpathentry kind="con" path="com.Android.ide.Eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.Android.ide.Eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

Теперь это работает! знак равно

0
Elenasys

У меня была точно такая же проблема. Как предложил @weiweia, переместите код из каталога Java в src, который работал для меня. Я также удалил зависимости Android из Проекта -> Свойства -> Путь сборки Java -> Порядок и экспорт и убедился, что только проекты Библиотеки включены в экран Android. 

0
bran.io

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

0
Deepak PK

Я была такая же проблема. Я использую Xamarin.Android.

Проблема в моем случае заключалась в том, что я изменил versionCode и versionName.

У меня не было проблем, когда я установил их так:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android" package="pac.ka.ge" Android:versionCode="1" Android:versionName="1.0" Android:installLocation="auto">

Проблема появилась, когда я изменил это на (versionCode 2 и versionName 0.0.1):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android" package=" pac.ka.ge " Android:versionCode="2" Android:versionName="0.0.1" Android:installLocation="auto">

Я исправил проблему, изменив versionCode 2 и versionName 1.0.0.1, например, так:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android" package=" pac.ka.ge " Android:versionCode="2" Android:versionName="1.0.0.1" Android:installLocation="auto">

Я не уверен, почему это было проблемой, может быть, Android не нравится более низкая версия Name с более высокой версией кода?

Я нашел следующее на http://developer.Android.com/guide/topics/manifest/manifest-element.html#vname

Android: VersionCode Внутренний номер версии. Этот номер используется только для определения того, является ли одна версия более новой, чем другая, причем более высокие числа указывают на более свежие версии. Это не номер версии, показанный пользователям; этот номер устанавливается атрибутом versionName . Значение должно быть установлено как целое число, например, «100». Вы можете определить его по своему усмотрению, если каждая последующая версия имеет большее число. Например, это может быть номер сборки. Или вы можете перевести номер версии в формате «x.y» в целое число, кодируя «x» и «y» отдельно в нижнем и верхнем 16 битах. Или вы можете просто увеличить число на единицу каждый раз, когда выходит новая версия.

Android: versionName Номер версии показывается пользователям. Этот атрибут может быть установлен как необработанная строка или как ссылка на строковый ресурс. Строка не имеет никакой другой цели, кроме как для отображения пользователям. Атрибут versionCode содержит значимый номер версии, используемый внутри.

0
PeterH

Я столкнулся с этой проблемой, когда пытался собрать и установить приложение на телефон с Android 8.1.0 (API 26).

Единственная причина в том, что я добавил Android:hasCode="false" в тег application в файле manifest. Тем не менее, он работал на API 24 с тем же кодом, когда я пытался несколько месяцев назад (странный?). 

После удаления этого атрибута проблема исчезает.

0
Lei Guo

У меня была такая же проблема сегодня. И перепробовал все приведенные выше решения, но у меня ничего не получалось. Потом я провел некоторое время и выяснил причину. Я думал, что это может сэкономить время некоторых других разработчиков, которыми я делюсь здесь. Проблема была с неправильным именем пакета. Я использовал архитектуру MVP и сохранял свою деятельность в view package. И я скопировал Основной класс из моего другого проекта. Это был подвох. В xml основная активность имела в виду другой пакет, который был только внешней стороной. Пакет не включал мой каталог просмотра (уровень иерархии MVP). Затем я также проверил в манифесте. Та же проблема, что я обнаружил и там. Таким образом, я предоставил полный путь (имя пакета) своей деятельности (пока MVP 'не просматривал каталог/пакет, я сохранил все свои действия). Это решило мою проблему. Надеюсь, что это помогает и другим.

0
Abdul Waheed

Я также столкнулся с той же проблемой, Мы можем решить эту проблему, сделав что-то вроде

1- Удалить приложение.

2- Перестройте проект.

3- Очистить проект.

4- Отменить и перезапустить проект из файла -> сделать недействительным и перезапустить.

0
Atif Mukhtiar