Android Studio启动报错:无法实例化Activity(ClassNotFoundException)
问题描述
我是Android Studio新手,启动代码时控制台出现如下错误:
FATAL EXCEPTION: main Process: com.Test.testApp, PID: 28325 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.Test.testApp/com.Test.testApp.HomeActivity}: java.lang.ClassNotFoundException: Didn't find class "com.Test.testApp.HomeActivity" on path: DexPathList[[zip file "/data/app/com.Test.testApp-nouq7sbVCrcRJQxd835Nvw==/base.apk"],nativeLibraryDirectories=[/data/app/com.Test.testApp-nouq7sbVCrcRJQxd835Nvw==/lib/arm64, /system/lib64, /hw_product/lib64, /system/product/lib64]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3978) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4247) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2613) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.Test.testApp.HomeActivity" on path: DexPathList[[zip file "/data/app/com.Test.testApp-nouq7sbVCrcRJQxd835Nvw==/base.apk"],nativeLibraryDirectories=[/data/app/com.Test.testApp-nouq7sbVCrcRJQxd835Nvw==/lib/arm64, /system/lib64, /hw_product/lib64, /system/product/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:209) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95) at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45) at android.app.Instrumentation.newActivity(Instrumentation.java:1264) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3963) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4247) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2613) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
我的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.Test.testApp"> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.TestTest" tools:targetApi="31"> <activity android:name=".HomeActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
我的HomeActivity.kt代码如下:
package com.Test.testApp import android.os.Bundle import androidx.appcompat.app.AppCompatActivity class HomeActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home) } }
请问该如何解决此问题?
解决方案
检查文件路径与包名一致性
确认HomeActivity.kt文件是否放在app/src/main/java/com/Test/testApp/目录下,包名com.Test.testApp必须和目录结构完全匹配(Android对包名大小写敏感,注意Test和testApp的大小写是否一致)。清理并重建项目
- 点击Android Studio顶部菜单栏的
Build->Clean Project - 完成后点击
Build->Rebuild Project
- 点击Android Studio顶部菜单栏的
验证Kotlin插件配置
确保项目已正确配置Kotlin支持:- 项目根目录的
build.gradle(Project级)需包含Kotlin插件依赖:plugins { id 'com.android.application' version '7.4.2' apply false id 'org.jetbrains.kotlin.android' version '1.8.20' apply false } - app模块的
build.gradle需应用Kotlin插件:plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' }
- 项目根目录的
检查多Dex配置(若启用)
如果项目开启了多Dex,需确认配置完整:- 在app模块的
build.gradle中添加:android { defaultConfig { multiDexEnabled true } } dependencies { implementation 'androidx.multidex:multidex:2.0.1' } - 自定义Application类需继承
MultiDexApplication,或者在attachBaseContext方法中初始化:override fun attachBaseContext(base: Context?) { super.attachBaseContext(base) MultiDex.install(this) }
- 在app模块的
排查混淆规则
如果开启了代码混淆,确认proguard-rules.pro中没有误过滤HomeActivity,添加规则:-keep class com.Test.testApp.HomeActivity { *; }重启IDE与设备
有时候缓存问题会导致类加载异常,重启Android Studio和模拟器/真机后重新运行项目。
内容的提问来源于stack exchange,提问作者Adam Respeliers
相关产品推荐
相关产品推荐

