【问题标题】:java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{…}: java.lang.ClassNotFoundException: Didn't find classjava.lang.RuntimeException:无法实例化活动 ComponentInfo{...}:java.lang.ClassNotFoundException:找不到类
【发布时间】:2014-11-05 22:49:14
【问题描述】:

我正在使用 Fused Location Provider 开发应用程序。当我尝试运行程序时,我收到一个错误“不幸的是,appname 已停止”。 Eclipse没有显示有任何错误但是logcat中有错误。我不知道如何修复它们。我下载了源代码here。请帮助我理解我做错了什么?

LogCat

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

【问题讨论】:

  • 发布你的 AndroidManifest.xml

标签: java android eclipse logcat


【解决方案1】:

因为你的例外是:

ClassNotFoundException: Didn't find class "com.kpbird.fusedlocation.MainActivity"

在您的AndroidManifest.xml 中添加您的活动所在的完整包:

<activity
                android:name="com.kpbird.fusedlocation.MainActivity"

或者一定要正确定义包名:

package="com.kpbird.fusedlocation"

我认为您在代码的某个位置输入了错误的应用程序包!

【讨论】:

  • 我试过了,但还是不行。我正在开发一个项目来确定紧急呼叫中人员的位置。所以这对我来说非常重要。您能否在您的计算机上尝试此源代码以了解问题?
  • 是的,我现在进入了我的 Eclipse,我只需要添加谷歌播放服务库的引用:|,我认为你在代码的某个地方输入了错误的包! :(
  • 感谢您帮助我:)。我再次检查我的代码。希望能找到问题。
  • 不客气,我认为更好/更快地下载并再次导入项目 =)。
【解决方案2】:

在我的情况下,问题在于 gradle

我将我的代码从 java 重构为 kotlin,但忘记在 Gradle 中添加它

apply plugin: 'kotlin-android'

【讨论】:

  • 谢谢!如果像我一样,您使用 .kts 文件进行 gradle 则将 plugins { id("kotlin-android") } 添加到您的应用级 gradle 文件
【解决方案3】:

当我将应用程序从一个目录移动到另一个目录时发生这种情况,如果 @Jorgesys's solution 没有帮助,请考虑重命名模块并清理项目。注意:我使用的是 Android Studio。

【讨论】:

    【解决方案4】:

    在包含AndroidManifest 引用时会出现同样的问题:

      <meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
    

    并且硬编码错误的google_play_services_version 值。

    【讨论】:

      【解决方案5】:

      在更新 MainActivity.java 时,我不小心将包名从 package com.ppg; 更改为 package com.PPG;(大写而不是小写)。当我改回小写时,它开始工作了。

      【讨论】:

        【解决方案6】:

        在这个问题上花了很多时间后,我终于找到了解决方案。

        只需从类的构造函数中删除setContentView(R.layout.LAYOUT_NAME); 并将其放入类的onCreate 方法中。

        100% 会解决的。

        【讨论】:

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