【问题标题】: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 ComponentInfo{com.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);
    }
}

【问题讨论】:

    标签: java android eclipse cordova


    【解决方案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: 无法实例化活动 ComponentInfo{com.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>
        

        【讨论】:

          猜你喜欢
          • 2015-03-04
          • 2013-09-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-08
          • 1970-01-01
          • 2017-06-25
          相关资源
          最近更新 更多