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

Kar*_*vam 125 c++ java android android-ndk

我目前正在开展一个项目,我必须使用纯粹的原生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]]
Run Code Online (Sandbox Code Playgroud)

在运行我的项目时.

这是我的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");
}
Run Code Online (Sandbox Code Playgroud)

#万一

在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)
Run Code Online (Sandbox Code Playgroud)

我在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" />                     
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*bas 80

我尝试了所有可能的选项,但结果为零.最后我找到了对我有帮助的正确解决方案.只需禁用Instant Run Go to File - > Settings - > Build,Execution,Deployment - > Instant Run - >取消选中即时运行复选框.运行你的应用程序一次,这个apk文件正常工作..

  • 在现代 android studio 中找不到即时运行:( (31认同)
  • 这是Android Studio的正确答案.我无法相信Instant Run仍然是如此的错误,你必须关闭它以避免令人讨厌的意外... (8认同)
  • 那不是我的解决方案.我已经禁用了即时运行 (4认同)
  • 几天,甚至几周,我一直在寻找这个答案!虽然不是关键,但这个问题一直在我的脑海里,而不是给我带来和平.从来没有想过即时运行会引发这种情况.我的应用程序在通过adb启动时工作正常,但在通过apk手动安装时总是与ClassNotFound运行时预期崩溃. (2认同)

mns*_*lim 64

我有类似的问题,这是我的解决方案:

  1. 右键单击您的项目,然后选择" 属性".
  2. 从左侧菜单中选择Java Build Path.
  3. 选择" 订购和导出"选项卡.
  4. 从列表中确保选中您添加到项目中的库或外部jar .
  5. 最后,清理您的项目并运行.

您也可以查看答案.

  • 我无法通过右键单击项目找到属性.可能是我很蠢.:( (20认同)
  • 我也找不到属性,任何人都想知道如何导航到列出的页面 (11认同)
  • 这是Eclipse IDE的解决方案.Android Studio中没有默认的"project.properties"文件.它可以创建. (6认同)
  • 提供的解决方案仅适用于 Eclipse IDE。 (3认同)
  • @Zin Min,你并不愚蠢,告诉某人“右键单击项目”只是糟糕的建议。右键点击哪里?在你的文件管理器中?如果 Android Studio 中的项目已经打开,我们是否需要关闭该项目? (2认同)

Sus*_*hil 41

这似乎是你的问题.清单中活动的相对路径不正确:

<activity android:name="android.app.POMActivity"
Run Code Online (Sandbox Code Playgroud)

用以下内容替换:

<activity android:name=".POMActivity"
Run Code Online (Sandbox Code Playgroud)

要么

<activity android:name="com.irrlicht.example1.POMActivity"
Run Code Online (Sandbox Code Playgroud)

  • 我试过两个,它显示了同样的例外. (2认同)

Vla*_*lad 24

删除设备上的应用程序和清理项目对我来说是有效的

  • 这对我来说也适用于本机反应。我使用 Android Studio 打开 android 文件夹,然后构建 -&gt; 清理项目。使用“react-native run-android”重建它 (2认同)

Aka*_*iya 23

我应该通过看到来理解这个问题

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'
 }
Run Code Online (Sandbox Code Playgroud)

然后扩展Application类(或者按照上面链接中的说明使用类声明应用程序类MultiDexApplication或覆盖AndroidManifest.xml函数attachBaseContext().

这就是全部,它解决了这个问题.

  • 在上面的依赖项中添加行对我来说是这样的。 (2认同)

pet*_*ejl 21

当布局中有自定义视图时,也会发生此异常,如下所示:

<com.example.MyView
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)

并且您将视图的包名称从"com.example"更改为其他内容,但您也忘记在布局中更改它.

  • 出于不同的原因,这很有帮助。检查你的拼写。我的类名拼写错误导致了最初的问题。 (2认同)

nic*_*ich 16

试试Clean Project&Rebuild Project.

  • 在“构建”菜单下。选择 **Build -&gt; Clean Project** 然后选择 **Build -&gt; Rebuild Project** (2认同)

Ali*_*lli 12

我通过./gradlew --stop在android studio终端中使用:命令解决了它.执行此命令后,清理并重建项目.


小智 11

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

为我工作.


Man*_*ddy 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'
}
Run Code Online (Sandbox Code Playgroud)

写一个类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();

    }
}
Run Code Online (Sandbox Code Playgroud)

并在Application标记中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">
Run Code Online (Sandbox Code Playgroud)


Rom*_*ald 10

如果项目正在编译之前,只需使用以下命令清除缓存:

./gradlew clean

要么

./gradlew cleanBuildCache

或者用于窗户

gradlew cleanBuildCache

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


moh*_*ge7 8

我多次遇到这个问题,并且通过禁用Instant Run解决了这个问题.


Har*_*eem 8

就我而言,这个问题是由 Kotlin 引起的。在我现有的代码中,有一个用 Kotlin 编写的类。我构建了应用程序,它安装了,并且一旦第一个活动打开应用程序就崩溃了。在 logcat 中显示了此错误。然后,我从 Kotlin 网站的 app gradle 文件中更新了我的 Kotlin 版本。再次构建应用程序,然后它运行良好。


Amr*_*Amr 8

对于现在遇到此问题的任何人,使用 android studio 4.0+,您只需启用此处提到的 java 8

android {
    defaultConfig {
            ...
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我花了很长时间才找到这个。非常感谢! (2认同)

sif*_*_in 8

打开“AndroidManifest”文件并检查是否有错误

检查您是否声明了该活动名称(当我们复制+粘贴活动类时我们会忘记该名称)。

就我而言,我已将所有出现的“com”替换为“ctrl”+“shift”+“R”命令,这也更改了清单中活动的名称(以 com 开头)。


小智 6

当您使用multidex时,然后尝试使用MultiDexAppication而不是Application扩展您的应用程序类,并覆盖以下方法,这需要Android 5.0以下(因为5.0及以上支持multidex)

@Override
protected void attachBaseContext(Context base)
{
    super.attachBaseContext(base);
    MultiDex.install(BaseApplication.this);
}
Run Code Online (Sandbox Code Playgroud)

并在依赖项中添加此项

compile 'com.android.support:multidex:1.0.1'
Run Code Online (Sandbox Code Playgroud)


Abd*_*far 6

我们不需要具有扩展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">
Run Code Online (Sandbox Code Playgroud)

以及build.gradle(Module:app)上的这个,

defaultConfig {
      ...

      // Enabling multidex support.
      multiDexEnabled true
}

dependencies {
     ... 
     compile 'com.android.support:multidex:1.0.2'
}
Run Code Online (Sandbox Code Playgroud)

谢谢.


Akk*_*kki 6

可能的原因之一是 Apps AndroidManifest.xml 文件中的活动路径不正确。使用完整的相对路径在 AndroidManifest.xml 中注册活动,如下所示。

<activity android:name="<full_path>.ActivityName" />
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

175594 次

最近记录:

6 年 前