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

Java.lang.ClassNotFoundException: Не нашел класс на пути: dexpathlist

В настоящее время я работаю над проектом, в котором я должен использовать исключительно собственный ndk. Он работал, когда я пытаюсь запустить пример helloworld из источника двигателя Irrlicht. Затем я пытаюсь использовать его в своем проекте, следуя тому же формату этого примера. Но я получил:

03-14 01:40:05.308: E/AndroidRuntime(799): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/android.app.POMActivity}: java.lang.ClassNotFoundException: Didn't find class "android.app.POMActivity" on path: DexPathList[[zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]]

во время запуска моего проекта.

Вот мой файл main.cpp:

#include <android/log.h>
#include <jni.h>
#include <android_native_app_glue.h>
#include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
}

#endif

в Android.mk:

LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include -I /home/karthik/Android/json/jsoncpp-src-0.5.0/libs/linux-gcc-4.8 -I /home/karthik/Android/json/jsoncpp-src-0.5.0/include/json 
LOCAL_SRC_FILES :=  android_tools.cpp main.cpp
LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid -ldl 
LOCAL_STATIC_LIBRARIES := Irrlicht android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)

И я дал имя Activity в AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.irrlicht.example1"
    android:versionCode="1"
    android:versionName="1.0">
...
<application android:icon="@drawable/irr_icon" android:label="HelloWorldMobile1" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:debuggable="true">
        <activity android:name="android.app.POMActivity"
        android:label="HelloWorldMobile1"
        android:launchMode="singleTask"
        android:configChanges="orientation|keyboardHidden"
        android:screenOrientation="portrait"
        android:clearTaskOnLaunch="true">
        <meta-data android:name="android.app.lib_name" android:value="HelloWorldMobile1" />                     

Какая ошибка я здесь делаю? Я буду публиковать полный код, если это возможно.

4b9b3361

Ответ 1

Я пробовал все возможные варианты, но результат равен нулю. Наконец, я нашел правильное решение, которое мне полезно. Просто перейдите в режим "Мгновенный запуск" Перейти к Файл → Параметры → Сборка, выполнение, развертывание → Мгновенный запуск → Снимите флажок для мгновенного запуска. Запустите приложение один раз, и этот файл apk работает правильно.

Ответ 2

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

  • Щелкните правой кнопкой мыши на своем проекте и выберите Свойства.
  • Выберите Путь сборки Java в меню слева.
  • Выберите вкладку Заказ и Экспорт.
  • В списке убедитесь, что отмечены библиотеки или внешние банки, добавленные в проект.
  • Наконец, очистите проект и запустите.

Вы также можете проверить этот ответ.

Ответ 3

Это, кажется, проблема в вашем случае. Относительный путь вашей активности в манифесте неверен:

<activity android:name="android.app.POMActivity"

замените это на:

<activity android:name=".POMActivity"

или

<activity android:name="com.irrlicht.example1.POMActivity"

Ответ 4

Я должен понять проблему, просто увидев

ошибки dex

Но для решения проблемы потребовалось полдня.
Я исправляю это, следуя инструкции на странице разработчиков Android: https://developer.android.com/studio/build/multidex.html

Сначала добавьте это в файл gradle.build:

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

 dependencies {
     compile 'com.android.support:multidex:1.0.0'
 }

Затем расширьте класс Application классом MultiDexApplication, как указано в приведенной выше ссылке (или объявите класс приложения в AndroidManifest.xml или переопределите функцию attachBaseContext(), если невозможно расширить класс приложения).

Это все и решило проблему.

Ответ 5

Удаление приложения на устройстве и очистка проектных работ для меня

Ответ 6

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

<com.example.MyView
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

и вы измените представление представления из "com.example" на что-то другое, но вы также забудете изменить его в макете.

Ответ 7

Я решил это, используя команду ./gradlew --stop в терминале android studio. После выполнения этой команды очистите и перестройте проект.

Ответ 8

Просто попробуйте Очистить проект и Перестроить проект.

Ответ 9

  • удалить папку с папкой
  • изменить порядок библиотек
  • очистить и перестроить

работал у меня.

Ответ 10

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

внутри 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">

Ответ 11

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

./gradlew clean

или же

./gradlew cleanBuildCache

или для окон

gradlew cleanBuildCache

https://developer.android.com/studio/build/build-cache.html

Ответ 12

Я сталкивался с этой проблемой несколько раз, и все они были решены отключением Instant Run.

Ответ 13

Просто очистите свой проект. Меня устраивает.

Ответ 14

Когда вы используете multidex, попробуйте расширить класс приложения с помощью MultiDexAppication вместо приложения и переопределить ниже метод, который требуется для Android ниже 5.0 (поскольку поддержка 5.0 и выше для мультидекса)

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

и в зависимостях добавьте это

compile 'com.android.support:multidex:1.0.1'

Ответ 15

Нам не нужно настраивать класс Application, который расширяет MultiDexApplication. Вместо этого мы можем иметь это на AndroidManifest.xml

<application
android:name="android.support.multidex.MultiDexApplication"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">

И вместе с этим на build.gradle (Модуль: приложение),

defaultConfig {
      ...

      // Enabling multidex support.
      multiDexEnabled true
}

dependencies {
     ... 
     compile 'com.android.support:multidex:1.0.2'
}

Благодарю.

Ответ 16

Просто измените имя своей папки с lib на libs,

Затем вы увидите некоторые ошибки в своем проекте, чтобы разрешить этот rightClick в проекте >

Properties > Java Build Path > libraries:

Удалите всю библиотеку с красными метками на ней, затем apply > ok > после этого очистите проект. TADA видит магию:)

Ответ 17

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

Right click on my main library > 
Properties > 
Android > 
Go to the very bottom of the screen and click (Add) > 
Select my other library that caused the crash >
Apply

до этого решения я использовал "Fix Project setup" изнутри .java файла в eclipse, но это не сработало, поэтому мне пришлось добавить его вручную здесь, и он работал

Ответ 18

Я получал этот сбой только на устройствах Samsung Lollipop, и это решение работало для меня.

dexOptions {
     preDexLibraries false
}

Я публикую этот ответ здесь, потому что этот вопрос в настоящее время является самым высоким результатом поиска в Google для этого сбоя, и ни один из приведенных выше ответов не помог мне.

Ответ 19

В моем случае эта проблема возникла из-за Котлина. В моем существующем коде был класс, который был написан Kotlin. Я собрал приложение, оно установилось и, как только открылось первое действие, приложение рухнуло. в logcat эта ошибка была показана. Затем я обновил свою версию Kotlin с веб-сайта Kotlin в файле приложения gradle. Снова создайте приложение, и тогда оно работало нормально.

Ответ 20

Следующее решение сработало для меня...

Я попробовал все, что упомянуто выше, но все еще не запустил свое приложение. У меня есть приложение-родное приложение, работающее на последней версии Gradle 4+ и Android Studio.

У меня была проблема, при которой, если я запускаю реактив-нативный запуск-android, он терпел неудачу с проблемой, говоря, что он не может найти класс MainApplication... т.е. ClassNotFoundException

Мне удалось решить эту проблему, когда я обновил свои gradle.properties для использования компилятора D8.

Я добавил:

android.enableD8 = TRUE

к моему gradle.properties

Подробности документа здесь: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

Ответ 21

Если вы включили minifyEnabled и shrinkResources в значение true в файле приложения вашего приложения. Вам нужно добавить следующую строку в файл proguard-rules.pro

-keep class com.yourpackage_name. ** {*; }

потому что минификация удалена некоторые важные классы в нашем файле apk.

Ответ 22

Если вы получили эту ошибку после удаления некоторой зависимости gradle, проверьте свой манифест и убедитесь, что вы удалили все записи, соответствующие этой зависимости.

Ответ 23

В соответствии с моим недоумением я получаю эту проблему после установки версии 2.1 для Android версии 2.1 до 2.3 из-за мгновенной функции, которую мое приложение не запускает, когда я копирую apk из вывода и помещаю его в SD-карту. Для этой проблемы я создаю apk из опции сборки make build apk в студии android.

Ответ 24

У меня была эта проблема раньше, и комментарии здесь помогли в прошлом, но на этот раз это не так. Я проверил свою конфигурацию ProGuard и удалил следующие строки, после чего она сработала, поэтому ProGuard может иметь отношение к этой ошибке:

 -optimizationpasses 5
        -overloadaggressively
        -repackageclasses ''
        -allowaccessmodification
        -dontskipnonpubliclibraryclassmembers

Ответ 25

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

<com.my.app.wrong.package.MyActivity
    android:id="@+id/myActivity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:paddingTop="16dp"
    android:paddingBottom="8dp"
    android:gravity="left" />

Ответ 26

Ответ Ашика Аббаса (отключить Мгновенный Бег) работает на меня, но мне нужен Мгновенный Бег, в конце концов я нашел решение, которое полезно для меня. просто отключите minifyEnabled. перейдите к build.gradle(Module: app) в блоке отладки и отключите minifyEnabled:

debug {
            minifyEnabled false

        }

Ответ 27

В моем случае я использовал старую библиотеку пространств имен, в то время как мой проект был настроен с использованием androidx.

Решением было заменить компонент android.support.design.widget.BottomNavigationView подходящим для выхода из библиотеки поддержки: com.google.android.material.bottomnavigation.BottomNavigationView.

Ответ 28

Для меня проблема появилась после того, как я создал подписанный APK. Чтобы исправить это, я сгенерировал новый отладочный apk с помощью Run/Build APK. После этого Run (cmd + r) снова работает без этой ошибки.

Ответ 29

Я столкнулся с той же проблемой. Я перепробовал все возможное за день, но ничего не получалось. Зависимость, которая вызывала проблему, использовала нижнюю компиляцию sdk, target sdk и min sdk. Я создал библиотечный модуль для проекта, скопировал все исходники и сопоставил версии SDK с версиями SDK приложения. И наконец это сработало как шарм.