java.lang.RuntimeException:无法实例化活动 ComponentInfo:java.lang.ClassNotFoundException

Posted

技术标签:

【中文标题】java.lang.RuntimeException:无法实例化活动 ComponentInfo:java.lang.ClassNotFoundException【英文标题】:java.lang.RuntimeException: Unable to instantiate activity ComponentInfo: java.lang.ClassNotFoundExceptionjava.lang.RuntimeException:无法实例化活动 ComponentInfo:java.lang.ClassNotFoundException 【发布时间】:2016-11-17 05:46:38 【问题描述】:

我正在尝试使用cordova 构建一个HelloWorld android 应用程序。 我正在跟随以下页面中提到的脚步 http://javaonlineguide.net/2015/06/apache-cordova-hello-world-program-for-android-platform-in-eclipse-example.html

我一直在浏览这个问题,我很确定我没有遇到上述相同的问题。我的两个活动都在 AndroidManifest 中声明,并且意图过滤器在那里。我尝试用 .MainActivity 替换我的清单 com.example.main.MainActivity 但仍然没有运气。我正在使用 Eclipse IDE 在 Java 构建路径-> 排序和导出中 Android Private Libraries 已选中

我一次又一次地尝试构建和清理项目。我什至尝试重新启动 Eclipse。

Project Explorer

这里是 Logcat:

07-14 06:07:36.169: E/AndroidRuntime(1133): FATAL EXCEPTION: main
07-14 06:07:36.169: E/AndroidRuntime(1133): Process: com.example.main, PID: 1133
07-14 06:07:36.169: E/AndroidRuntime(1133): java.lang.RuntimeException: Unable to instantiate activity ComponentInfocom.example.main/com.example.main.MainActivity: java.lang.ClassNotFoundException: Didn't find class "com.example.main.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.main-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.main-1, /system/lib]]
07-14 06:07:36.169: E/AndroidRuntime(1133): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
07-14 06:07:36.169: E/AndroidRuntime(1133): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-14 06:07:36.169: E/AndroidRuntime(1133): at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-14 06:07:36.169: E/AndroidRuntime(1133): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-14 06:07:36.169: E/AndroidRuntime(1133): at android.os.Handler.dispatchMessage(Handler.java:102)
07-14 06:07:36.169: E/AndroidRuntime(1133): at android.os.Looper.loop(Looper.java:136)
07-14 06:07:36.169: E/AndroidRuntime(1133): at android.app.ActivityThread.main(ActivityThread.java:5001)
07-14 06:07:36.169: E/AndroidRuntime(1133): at java.lang.reflect.Method.invokeNative(Native Method)
07-14 06:07:36.169: E/AndroidRuntime(1133): at java.lang.reflect.Method.invoke(Method.java:515)
07-14 06:07:36.169: E/AndroidRuntime(1133): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-14 06:07:36.169: E/AndroidRuntime(1133): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-14 06:07:36.169: E/AndroidRuntime(1133): at dalvik.system.NativeStart.main(Native Method)
07-14 06:07:36.169: E/AndroidRuntime(1133): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.main.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.main-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.main-1, /system/lib]]
07-14 06:07:36.169: E/AndroidRuntime(1133): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
07-14 06:07:36.169: E/AndroidRuntime(1133): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
07-14 06:07:36.169: E/AndroidRuntime(1133): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
07-14 06:07:36.169: E/AndroidRuntime(1133): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
07-14 06:07:36.169: E/AndroidRuntime(1133): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2101)

这里是 AndroidManifest.xml:

<?xml version='1.0' encoding='utf-8'?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.main"
android:hardwareAccelerated="true"
android:versionCode="1"
android:versionName="0.0.1" >

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true"
    android:xlargeScreens="true" />

<uses-permission android:name="android.permission.INTERNET" />

<application
    android:hardwareAccelerated="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:supportsRtl="true" >
    <activity
        android:name="MainActivity"
           android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
        android:label="@string/activity_name"
        android:launchMode="singleTop"
        android:theme="@android:style/Theme.DeviceDefault.NoActionBar"
        android:windowSoftInputMode="adjustResize" >
        <intent-filter android:label="@string/launcher_name" >
            <action android:name="android.intent.action.MAIN" />

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

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="23" />

</manifest>

这里是 MainActivity.java

package com.example.main;

import android.os.Bundle;
import org.apache.cordova.*;

public class MainActivity extends CordovaActivity

    @Override
    public void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState);
        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);
    

【问题讨论】:

【参考方案1】:

我已经停止了 Android Studio 的即时运行及其工作。

文件->设置->构建->即时运行->禁用启用即时运行以热插拔代码/资源更改的复选框

【讨论】:

【参考方案2】:

因为你是这样声明的

  <activity
        android:name="MainActivity"

像这样把. 放到MainActivity

 <activity
            android:name=".MainActivity"

【讨论】:

您好 Ironman,感谢您的回复。我试过了。但错误仍然存​​在 是的。我这样做了。建议更改后尝试清洁和构建项目。【参考方案3】:

在您的清单中,在您的活动标签中,添加一个“。”在 MainActivity 之前

`android:name=".MainActivity"`

您可以将android.name 视为package 名称的延续。因此,如果没有点,它将是 com.example.mainMainActivity,这是错误的。正确的结构是com.example.main.MainActivity

【讨论】:

清理和构建。让我知道之后的错误是什么。 尝试清洁和建造。我遇到了同样的错误。 07-14 06:54:53.859: E/AndroidRuntime(1280): java.lang.RuntimeException: 无法实例化活动 ComponentInfocom.example.main/com.example.main.MainActivity :java.lang.ClassNotFoundException:在路径上找不到类“com.example.main.MainActivity”:DexPathList [[zip文件“/data/app/com.example.main-2.apk”],nativeLibraryDirectories = [ /data/app-lib/com.example.main-2, /system/lib]] 你确定 MainActivity 不在 com.example.main 的子包中。如果是这样,名称应该是 android:name="..MainActivity" 是的,我很确定 MainActivity 不在子包中。我尝试上传 Project Explorer 的图片,但我还没有这些权限。很抱歉。【参考方案4】:

我需要做的就是使用 Cordova 构建应用程序。

我在 Eclipse 中构建项目,但我还需要使用命令构建项目:

E:\Software\Demo\VMSapp>cordova build

此命令更新 APK 文件。

【讨论】:

【参考方案5】:

我重新启动了我的设备,它就可以正常工作了!

【讨论】:

这应该是一条评论【参考方案6】:

在您的清单中,如果名称已经是 '.MainActivity' 并且仍然显示错误,请执行此操作。

例如:

<activity
            android:name="com.pakgename.MainActivity"
            ...
</activity>

【讨论】:

以上是关于java.lang.RuntimeException:无法实例化活动 ComponentInfo:java.lang.ClassNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 按钮导致崩溃

添加 ImageView 时应用程序崩溃?