102
10-22 15:29:40.897: E/AndroidRuntime(2561): FATAL EXCEPTION: main
10-22 15:29:40.897: E/AndroidRuntime(2561): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.gvg.simid/com.gvg.simid.Login}: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.os.Looper.loop(Looper.java:137)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.reflect.Method.invokeNative(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.reflect.Method.invoke(Method.java:525)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at dalvik.system.NativeStart.main(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
10-22 15:29:40.897: E/AndroidRuntime(2561):     ... 11 more

我不确定是什么原因造成的,因为它在清单中正确列出:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gvg.simid"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.READ_OWNER_DATA" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <uses-feature android:name="android.hardware.usb.host" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.gvg.simid.Login"
            android:label="@string/app_name" 
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

我还添加了“Android Private Libraries”来构建路径,并将其移至“Order and Export”的顶部,但它仍然给了我同样的错误。

编辑:我完全重建了项目,并且无法重现错误。不知道是什么原因造成的。

4

37 回答 37

78

我的项目也有同样的问题。这是由于我的项目和我在项目中添加的库项目之间的android支持库版本冲突而发生的。将相同版本的android支持库放入您的项目和您包含的库项目中并清理构建......一切都会工作......

于 2014-03-26T05:22:44.817 回答
33

以下方法对我有用

  • 右键单击project并选择properties
  • “属性”面板将打开。从左侧菜单转到Java Build Path->Order and Export
  • 从下面的列表中取消选中旁边的框"Android Dependencies"
  • 最后clean your project运行
于 2014-01-22T17:58:28.407 回答
14

对于那些在 Android Studio 上遇到此问题的人,我在合并后遇到了同样的问题,出于某种原因,它甚至在操作之后仍然存在cleaninvalidate cash/restart这让我发疯了。

事实证明,它可以通过从命令行运行一次 gradle build 来修复。只需在项目目录中运行以下命令:

./gradlew assemble clean
./gradlew assemble

我希望它可以节省我不得不经历的时间浪费和挫败感。

于 2017-05-31T11:24:41.910 回答
12

我有同样的问题,这对我有用

1) mainfest 中活动的完整路径代替相对路径。

2)删除'build'文件夹并清理项目。

于 2016-06-29T07:04:04.600 回答
10

如果你Library Project在你的 Android 项目中添加了一个新的模块并且你正在Kotlin你的库中使用,不要忘记添加

apply plugin: 'kotlin-android'

到模块的 Gradle 文件的顶部。当您创建新模块时,Android Studio 不会添加此行,这可能会像我一样浪费您的时间。

编辑:过了一会儿,我又遇到了这个问题,这次我忘了将我的模块添加为项目的依赖项。:)

于 2018-12-17T15:24:12.530 回答
9

如果您使用的是 Eclipse,请尝试 Project -> Clean

于 2013-10-22T16:25:50.080 回答
7

如果我们更改 APP 的构建路径,就会发生这种情况,这可能是添加或删除或更改库或 .jar 文件的任何情况。最好的解决方案是重新启动 Eclipse。

于 2014-01-28T08:39:45.003 回答
6

对于任何启用 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();

    }
}

并在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">
于 2017-01-05T07:29:28.203 回答
6

如果您在 Android 4.4 及更早版本上使用 Multidex,您的问题可能是您的活动类位于第二个 dex 文件中,因此 android 系统找不到。

要将您的活动类保留在主 dex 文件中,请参阅此页面:

https://developer.android.com/studio/build/multidex.html#keep


要查找哪些类位于 dex 文件中,请使用 Android Studio

只需将您的 apk 拖放到 Android Studio 中即可。您应该能够在 apk 资源管理器中看到您的 dex 文件。

然后选择dex文件,看看里面有哪些类。


另一种选择是 dexdump:

您可以使用命令dexdump检查您的 apk 中包含的 dex 文件的内容,该命令位于

android-sdk/build-tools/27.0.3/dexdump

对于 Windows 用户,请参阅我为简化流程而制作的此工具

于 2017-12-28T16:34:04.243 回答
6

如果您在 Android Studio 2.0 及更高版本中使用新的 Instant Run 功能时遇到此错误,那么这是他们方面的某种错误。
要解决此问题,您必须在设备/模拟器上手动停止您的应用程序,如果它没有停止,然后从 Android Studio 中选择Build→</kbd>Rebuild Project.
Then click the Run button or SHIFT+F10

于 2016-04-17T13:27:57.610 回答
5

就我而言,是 proguard 缩小过程从我的生产 apk 中删除了一些重要的类。

解决方案是编辑 proguard-rules.pro 文件并添加以下内容:

-keep class com.someimportant3rdpartypackage.** { *; }
于 2018-04-02T01:55:32.867 回答
3

1)在项目根目录下创建 libs 文件夹
2)将 jar 文件复制并粘贴到其中
3)配置构建路径(添加 jar)
4)清理并运行

欢呼 :-)

于 2014-12-24T06:51:44.623 回答
3

信不信由你……我尝试了几乎所有在stackoverflow上找到的答案。没有任何帮助,直到我重新启动机器。我的 Android Studio 在 Ubuntu 16.04 LTS 上运行。

于 2017-01-05T02:22:46.963 回答
3

当我定义一个扩展视图的类但在布局文件中以错误的名称引用此自定义视图时,我曾经遇到过此错误。而不是<com.example.customview/>,我包含<com.customview/>在 XML 布局文件中。

于 2015-07-11T05:46:18.883 回答
2

我遇到了同样的问题,我注意到示例代码放在目录“java”而不是目录“src”下。把代码移到src后,问题就解决了。

还要确保将应用程序目录拆分为多个文件夹。例如/main/com/site/appname/不是/main/com.site.appname/

希望有效~

于 2014-03-14T01:18:28.673 回答
2

我遇到了同样的问题并通过执行以下操作解决了它:

从构建菜单中选择

1-清洁项目。

2-构建APK。

于 2017-09-23T04:49:44.157 回答
2

我遇到了同样的问题,经过大量的工作和搜索,我找到了解决方案:我刚刚清理了项目,然后构建了 apk。-Build->Clean Project -Build-> Build APK(s) 我希望它有用.....

于 2019-05-24T22:01:42.560 回答
1

从版本 18 升级后我遇到了这个问题。升级后我有以下问题: Project Build Target is 5.01, targetSDKVersion=21

但是: 构建工具仍然来自 Android 4.3.1 (18) 我注意到那些从 ActionBarActivity 派生活动的应用程序因上述错误而崩溃,而那些仍未运行的应用程序。

因此,简单的解决方法是使用最新的Android SDK Build Tools 21.1.2 而不是仅使用 Android SDK Build Tools 18 的那些,这在某种程度上似乎是默认设置。

所以罪魁祸首似乎是 Appcompat 库,我用它来实现 Actionbar 的向后兼容性。

顺便说一句:使用我必须设置/修复的 appcompat 库:( $SDKInstallDIR$\Android\android-sdk\extras\android\support\v7\appcompat\project.properties target=android-21在其他一些有用的帖子中推荐,默认值为 19)

于 2015-01-28T16:38:04.057 回答
1

我最近遇到了这个问题,我正在使用 Android Studio 0.8.4

问题是我决定重命名一个名为 main.xml 的 XML 菜单布局文件。

右键单击它并选择Refactor --> Rename。在重命名之前,请务必取消选中“在评论和字符串中搜索”并按下Refactor

因为我的文件最初命名为'main',所以它重命名了 app.iml 和 build.gradle 中的关键路径,主要是 build.gradle 中的 java.srcDirs,因为路径定义为'src/main/java'.

我希望这可以帮助任何可能遇到此问题的人。

于 2014-08-08T18:57:44.183 回答
1

我多次遇到这个问题,而且我经常没有对依赖项做一些明显错误的事情。

检查这个“未找到”类是否存在于最终的 apk 中总是一个好主意。如果是这样,就像我的情况一样,问题通常是:

并不是没有找到给定的类,而是无法加载它,因为它的超类丢失了。

检查您扩展的类是否可用,然后尝试相应地修复您的构建脚本或依赖项。

于 2017-02-22T11:32:21.370 回答
1

此处提到的解决方案 --> Multidex 问题解决方案对我有用。以下是需要添加到应用程序上下文的内容:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
于 2017-12-13T04:21:44.880 回答
1

我在 Windows 上遇到了同样的问题。我已将项目的路径重命名为包含空格的内容。

确保项目的路径不包含空格。

于 2017-04-23T19:39:23.023 回答
0

我有同样的问题。正如@weiweia 建议的那样,将代码从 java 目录移动到 src 为我工作。我还从 Project --> Properties --> Java Build Path --> Order and Export 中删除了 Android 依赖项,并确保仅在 Android 屏幕中包含 Library Projects。

于 2014-07-15T20:49:27.783 回答
0

我遇到了这个问题,由几个原因引起,但我在你的堆栈跟踪“ **Unable to instantiate activity ComponentInfo{...}: java.lang.ClassNotFoundException: Didn't find class "..." on path: DexPathList[[**”中看到了这个,我.classpath在它停止工作之前发现了一个不同之处。

 <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

我已经添加了这一行:

<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>

这是最终版本:

  <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

现在它起作用了!=)

于 2014-01-30T21:57:33.827 回答
0

以防万一有人遇到和我一样的问题,这里没有建议的答案有帮助。

对我来说,原因是 Android Studio 重构是错误的。我将一个内部类移到一个类之外,这是一个视图,因此也有一个 xml,其中设置了直接路径。这条路径不会被工作室重构!并且不会抛出任何错误。

希望这对任何人都有帮助。干杯。

于 2015-01-21T21:22:08.667 回答
0

我遇到过同样的问题。我正在使用 Xamarin.Android。

我的问题是我更改了 versionCode 和 versionName。

当我像这样设置它们时我没有问题:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pac.ka.ge" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">

当我将其更改为此(版本代码 2 和版本名称 0.0.1)时出现了问题:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package=" pac.ka.ge " android:versionCode="2" android:versionName="0.0.1" android:installLocation="auto">

我通过更改为 versionCode 2 和 versionName 1.0.0.1 解决了这个问题,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package=" pac.ka.ge " android:versionCode="2" android:versionName="1.0.0.1" android:installLocation="auto">

我不确定为什么这是一个问题,也许 Android 不喜欢较低的 versionName 和较高的 versionCode?

我在http://developer.android.com/guide/topics/manifest/manifest-element.html#vname上找到了以下内容

android:versionCode 内部版本号。此数字仅用于确定一个版本是否比另一个版本更新,数字越大表示版本越新。这不是向用户显示的版本号;该数字由 versionName 属性设置。该值必须设置为整数,例如“100”。您可以根据需要定义它,只要每个后续版本都有一个更高的数字。例如,它可以是内部版本号。或者,您可以通过分别在低 16 位和高 16 位中对“x”和“y”进行编码,将“xy”格式的版本号转换为整数。或者您可以在每次发布新版本时简单地将数字增加一。

android:versionName 向用户显示的版本号。此属性可以设置为原始字符串或字符串资源的引用。该字符串除了显示给用户之外没有其他用途。versionCode 属性保存内部使用的重要版本号。

于 2014-10-30T11:05:11.790 回答
0

我有这个问题很长一段时间了,和其他人一样,上面的答案并不适用于我的项目。

在我的项目中,我将一个项目链接到我的项目,每次执行另一个项目的一些代码时,它都会抛出 ClassDefNotFoundError 。

所以这是我的解决方案。我去了我的项目和 Java Build Path 的项目属性。将另一个项目的 src 文件夹中的“源”选项卡和“链接源”按到我自己的项目中,并命名一个新文件夹“core-src”。

希望这个解决方案可以帮助某人

于 2014-08-14T07:55:19.877 回答
0

在我们的例子中,我们想要编译 Vagrant 版本并且有同样的错误。我们在 Build 菜单中clean project修复了它rebuild project

于 2015-05-19T08:18:28.660 回答
0

I just restarted the device and ran the app. It worked without any issues. Hope this helps someone :)

于 2016-05-30T09:43:14.077 回答
0

我今天遇到了同样的问题。并尝试了所有已经给出的上述解决方案,但对我没有任何帮助。然后我花了一些时间,我找到了原因。我认为它也可以节省我在这里分享的其他一些开发人员的时间。问题是错误的包名。我正在使用 MVP 架构,并且我一直在查看我的活动包裹。我从我的另一个项目中复制了 Main 类。这就是问题所在。在 xml 中,Main Activity 指的是位于外侧的不同包。该包不包括我的视图目录(MVP 层次结构级别)。然后我也检查了清单。我在那里也发现了同样的问题。所以我提供了我的活动的完整路径(包名)(直到 MVP 的视图目录/包我保留了我的所有活动)。这解决了我的问题。希望对其他人也有帮助。

于 2018-09-17T11:20:27.807 回答
0

当我尝试在具有API 23的设备中进行调试时,我在Android Studio中发现了这个错误,所以我检查了 Android Studio,发现我没有安装这个 API 23 版本。安装后,我解决了这个问题。

于 2017-02-09T01:22:02.443 回答
0

我对 Android 4 Phone 有类似的问题,但适用于高于此的版本。由于某些原因,我之前在 gradle 脚本中添加了“multidexEnabled=true”行。现在我删除了这一行,它适用于两个版本(Android 4 及更高版本)。但我不明白为什么我添加了那条线以及它现在是如何工作的。

于 2020-07-03T15:54:12.083 回答
0

java.lang.RuntimeException:无法实例化应用程序 com.android.tools.fd.runtime.BootstrapApplication:java.lang.ClassNotFoundException:在路径上找不到类“com.android.tools.fd.runtime.BootstrapApplication”:/数据/app.apk(在 android 4.3、4.1 中)

无法实例化应用程序 com.android.tools.fd.runtime.BootstrapApplication: java.lang.ClassNotFoundException: com.android.tools.fd.runtime.BootstrapApplication(在下面的棒棒糖我面临这样的错误)

要禁用即时运行,请按照以下步骤在 android studio 中禁用即时运行 1. 转到文件设置--> 构建、执行、部署 --> 即时运行 ---> 取消选中“启用即时运行”

于 2017-06-20T05:00:12.487 回答
0

我遇到了同样的问题。我首先删除了你的android项目文件夹中的build文件夹和你的app文件夹中的build文件夹来解决它。然后清理你的项目并构建。

于 2017-04-07T13:34:53.903 回答
0

我也遇到了同样的问题,我们可以通过做一些事情来解决这个问题

1-卸载应用程序。

2-重建项目。

3-清理项目。

4- 使项目无效并从文件重新启动 -> 使项目无效并重新启动。

于 2017-03-27T06:23:39.313 回答
0

当我尝试将我的应用程序构建并安装到 Android 8.1.0 (API 26) 手机时,我遇到了这个问题。

唯一的原因是我在文件中添加android:hasCode="false"application标签。manifest但是,当我几个月前尝试时,它使用相同的代码在 API 24 上工作(奇怪?)。

删除该属性后,问题就消失了。

于 2018-02-23T07:42:35.273 回答
-1

我在 IntelliJ IDEA 中遇到了这个问题。这就是我解决它的方法:

项目属性 > 构面 > 单击从您要添加的外部库创建的 Android 构面 > 选中“库模块”框。

于 2014-11-23T17:48:40.437 回答