java.lang.ClassNotFoundException:在path上找不到类:dexpathlist

我目前正在一个项目中,我必须使用纯粹的本地ndk。 当我尝试运行来自Irrlicht引擎源的helloworld示例时,它工作。 然后我尝试在我的项目中使用该示例的相同格式。 但是我得到了:

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"); } 

#万一

在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中给出了Activity名称:

 <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" /> 

我在这里做错了什么? 如果必要,我会发布完整的代码。

我有一个类似的问题,这是我的解决scheme:

  1. 右键单击您的项目,然后select属性
  2. 从左边的菜单中selectJava Build Path
  3. select订单和导出选项卡。
  4. 从列表中确认您添加到您的项目的库或外部jar子被检查
  5. 最后,清理你的项目并运行。

你也可以检查这个答案。

这似乎是你的情况的问题。 您在清单中的活动的相对path不正确:

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

将其replace为:

 <activity android:name=".POMActivity" 

要么

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

我尝试了所有可能的select,但结果是零。 最后,我find了对我有帮助的正确解决scheme。 只要去禁用即时运行转到文件 – >设置 – >build立,执行,部署 – >即时运行 – >取消checkbox即时运行 。 运行你的应用程序一次,这个apk文件正常工作..

我应该通过看明白这个问题

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类(或者在AndroidManifest.xml声明应用程序类或者使用MultiDexApplication类来覆盖attachBaseContext()函数,如上面的链接所示。

这一切,它解决了这个问题。

设备上的应用程序的删除和项目的清理工作对我来说

  1. 删除bin文件夹
  2. 改变图书馆的顺序
  3. 清理和重build

为我工作。

我解决了它的使用: ./gradlew --stop命令在android studioterminal。 执行此命令后,清理并重build项目。

对于任何一个谁有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标签

  <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"> 

如果项目正在编译之前清除caching通过使用:

./gradlew clean

要么

./gradlew cleanBuildCache

或为Windows

gradlew cleanBuildCache

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

只要尝试清洁项目重build项目

只要将您的文件夹名称从lib更改为libs

然后你会在你的项目中看到一些错误标记,解决这个问题点击项目>

Properties > Java Build Path > libraries

删除所有带有红色标记的库,然后在清理项目之后apply > ok > 。 TADA看魔术:)

在我尝试给出的答案后,我发现了另一个相同的exception的原因,我不得不添加我手动使用库到我的主库通过

 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 

在这个解决scheme之前,我在eclipse的.java文件中使用了“Fix Project setup”,但是这不起作用,所以我不得不在这里手动添加它,

如果在删除一些gradle依赖项后收到此错误,请检查清单并确保删除了与该依赖项相对应的所有条目。

在使用multidex时,尝试使用MultiDexAppication而不是Application来扩展应用程序类,并覆盖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' 

根据我的理解,我得到更新之后android studio 2.1到2.3的问题,由于即时function,我的应用程序将无法运行时,我从输出复制apk并放入SD卡。 对于这个问题,我构buildapk的构build选项在Android Studio中构buildapk。

当您在布局中具有自定义视图时,也会发生此exception:

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

并将视图的包名称从“com.example”更改为不同的内容,但您忘记在布局中更改它。

我们不需要定制扩展MultiDexApplication的 Application类。 相反,我们可以在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 (Module:app)上的这个,

 defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 // Enabling multidex support. multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.2' } 

谢谢。