Android

java.lang.ClassNotFoundException: Didn't find class on path: dexpathlist

java.lang.ClassNotFoundException: Не найден класс в path: 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)

И я указал имя действия в 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" />

В чем ошибка, которую я здесь делаю? При необходимости я опубликую полный код.

Переведено автоматически
Ответ 1

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

Ответ 2

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

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

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

<activity android:name=".POMActivity"

или

<activity android:name="com.irrlicht.example1.POMActivity"
Ответ 3

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


  1. Щелкните правой кнопкой мыши на вашем проекте и выберите Свойства.

  2. Выберите путь сборки Java в меню слева.

  3. Выберите вкладку Порядок и экспорт.

  4. В списке убедитесь, что отмечены библиотеки или внешние jars, которые вы добавили в свой проект.

  5. Наконец, очистите свой проект и запустите.

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

Ответ 4

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

2023-05-31 13:34 java android android-ndk