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

Karthik Sivam 08/21/2017. 13 answers, 93.384 views
java android android c++ android-ndk android-ndk

В настоящее время я работаю над проектом, в котором я должен использовать исключительно собственный 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 #include #include #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:

...                 ? ...                 

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

4 Comments
Siddharth_Vyas 03/14/2014
Используете ли вы какие-либо внешние файлы jar?
Karthik Sivam 03/14/2014
@SiddharthVyas Нет, я не использую внешние файлы jar в этом.
1 Igor Ganapolsky 08/09/2016
Является ли ваше приложение многогранным? Если это так, то это объясняет проблему.
j2emanue 07/05/2017
когда я сделал подписанный apk, эта ошибка не произошла. просто отлаживать

13 Answers


mnsalim 05/23/2017.

У меня была аналогичная проблема, вот мое решение:

  1. Щелкните правой кнопкой мыши свой проект и выберите « Properties .
  2. Выберите « Java Build Path в меню слева.
  3. Перейдите на вкладку « Order and Export ».
  4. Из списка убедитесь, что отмечены библиотеки или внешние банки, добавленные в проект.
  5. Наконец, очистите проект и запустите.

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

4 comments
1 FoxDonut 11/06/2016
Это правильное решение вопроса. Я проверил это с моей игрой libgdx с теми же ошибками, что и выше. Я нашел эти ошибки, используя журнал, сгенерированный с моего телефона (samsung galaxy S6). Когда я применил это решение, все мои проблемы были решены.
2 Zin Min 03/25/2017
Я не могу найти Properties из правого щелчка проекта. Может быть, я глуп. :(
2 user3036320 04/19/2017
пожалуйста, покажите решение для Android.
2 Skyler 07/08/2017
Я тоже не могу найти свойства, кто-нибудь знает, как перейти на указанную страницу

Sushil 03/14/2014.

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

 

замените это следующим образом:

 

или

 
1 comments
1 Karthik Sivam 03/14/2014
Я пробовал оба, он показывает одно и то же исключение.

Akash Bisariya 03/06/2017.

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

dex errors

Но для решения проблемы потребовалось полдня.
Я исправить это, следуя инструкциям на странице разработчиков 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'
 } 

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

Вот и все, и это решило проблему.

4 comments
1 milosmns 08/30/2016
Добавление multi-dex полезно только тогда, когда вы передаете ограничение количества ссылок (56k), и оно very неустойчиво и very ненадежно до Lollipop. Это должно использоваться для устранения проблем в качестве крайней меры.
Akash Bisariya 08/30/2016
то какое должно быть решение в соответствии с вами
milosmns 08/30/2016
Я просто говорю, что multi-dex вызывает больше проблем, чем помогает, что четко указано на веб-сайте разработчика. Я бы не искал ответа, если бы у меня был один, не так ли?
Akash Bisariya 08/30/2016
Ok спасибо за информацию, пожалуйста, обновите здесь, если вы нашли хорошее решение, это было бы большой помощью.

V. Kalyuzhnyu 07/07/2016.

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


crazyjune 06/13/2014.
  1. удалить папку bin
  2. изменить порядок библиотек
  3. чистить и перестраивать

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


Ali Gürelli 10/13/2016.

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


Redman 01/05/2017.

Для любого, у кого есть 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 как 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 внутри тега приложения

 

Ashik Abbas 07/26/2017.

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


Walking Code 05/05/2014.

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

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

Properties > Java Build Path > libraries :

Удалите всю библиотеку с красными метками на ней, затем apply > ok > после этого clean your project . ТАДА видят магию :)

1 comments
Shubham 10/27/2015
имя папки только для libs

Tere Bentikh 09/29/2015.

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

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, но это не сработало, поэтому мне пришлось добавить его вручную здесь, и это сработало


dees91 11/21/2016.

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

1 comments
Petter Friberg 11/21/2016
Не добавляйте один и тот же ответ к нескольким вопросам. Ответьте на лучший и обозначьте остальные как дубликаты. См. Можно ли добавить дублирующий ответ на несколько вопросов?

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

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

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

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

Shivegeeky 06/23/2017.

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

Related questions

Hot questions

Language

Popular Tags