【问题标题】:My android app is giving a long error and is not starting我的 android 应用程序给出了一个很长的错误并且没有启动
【发布时间】:2019-09-09 22:59:17
【问题描述】:

尝试在模拟器中运行我的应用时遇到错误

我正在学习一个向您展示如何制作像 WhatsApp 这样的应用程序的教程,但我遇到了一些麻烦。每当我尝试在我的模拟器中运行该应用程序时,我都会收到这个似乎无法解决的非常长的错误。我唯一改变的可能很重要的是文件名。这是 MainActivity.jk 或 tk 我忘了。但我将其更改为 MainActivity.Java。但这是我不断遇到的错误。

04-19 13:30:10.485 3614-3614/? E/AndroidRuntime: 致命异常: main 进程:com.example.chatster,PID:3614 java.lang.RuntimeException:无法实例化活动 ComponentInfo{com.example.chatster/com.example.chatster.MainActivity}:java.lang.ClassNotFoundException:在路径上找不到类“com.example.chatster.MainActivity”: DexPathList[[zip 文件“/data/app/com.example.chatster-1.apk”],nativeLibraryDirectories=[/data/app-lib/com.example.chatster-1, /vendor/lib, /system/lib ]] 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2121) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 在 android.app.ActivityThread.access$800(ActivityThread.java:135) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5017) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 在 dalvik.system.NativeStart.main(本机方法) 引起:java.lang.ClassNotFoundException:在路径上找不到类“com.example.chatster.MainActivity”:DexPathList [[zip file“/data/app/com.example.chatster-1.apk”],nativeLibraryDirectories =[/data/app-lib/com.example.chatster-1, /vendor/lib, /system/lib]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:497) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:457) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1061) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 在 android.app.ActivityThread.access$800(ActivityThread.java:135) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5017) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 在 dalvik.system.NativeStart.main(本机方法)

MainActivity.Java

package com.example.chatster;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

import java.util.Objects;

public class MainActivity extends AppCompatActivity {

protected Bundle savedInstanceState;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    this.savedInstanceState = savedInstanceState;

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar mToolBar = (Toolbar) findViewById(R.id.Main_page_toolbar);
    setSupportActionBar(mToolBar);
    Objects.requireNonNull(getSupportActionBar()).setTitle("Chatster");
}

}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      package="com.example.chatster">

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" tools:ignore="AllowBackup,GoogleAppIndexingWarning">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

</manifest>

【问题讨论】:

  • 添加你的项目结构的截图,这样我们就可以看到你的 MainActivity 存在于哪个包中。
  • 我不能,因为我的电脑有问题,但它在 android 选项卡下。 app\java\chatster\com.example.chatster\MainActivity.Java
  • 你试过把 app/src/main/java/com/example/chatster/MainActivity.java 放进去吗?

标签: java android xml


【解决方案1】:

这似乎是您的问题。:清单中 activity 的相对路径不正确,或者您没有在 androidManifest 中声明您的活动

<activity android:name="com.example.chatster.MainActivity"

请尝试从您的onCreate() 中删除此行

this.savedInstanceState = savedInstanceState ;

完成此操作后,请清理并重建您的项目并重新启动您的 android studio

请查看link了解更多信息,希望您能解决问题

【讨论】:

  • 对不起,我忘了把我的android清单文件放在那里,现在看看吧
  • 尝试像我上面写的那样用包声明你的活动
  • 我添加了那行。然后我清理了项目,然后我重新构建它,它仍然无法正常工作
  • 是的。还是一样的
  • 清理重建并重启你的安卓工作室!
【解决方案2】:

在 Android Studio 中禁用即时运行。

转到文件 -> 设置/首选项 (Mac) -> 构建执行和部署 -> 取消选中即时运行

然后清理并重建项目。

【讨论】:

  • 你的multidex是否在gradle文件中启用为true?
  • 我的 gradle 文件中没有 multidex
  • 好的,您是否尝试过使缓存无效并从 Android Studio 中的文件选项重新启动?如果没有,您可以检查一下。
  • 是的,我试过了
猜你喜欢
  • 1970-01-01
  • 2020-09-08
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多