Android应用启动报错:ClassNotFoundException引发RuntimeException求解决
启动时ClassNotFoundException导致RuntimeException的解决方案
报错日志
FATAL EXCEPTION: main Process: com.example.mquran, PID: 15561 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.mquran/com.example.mquran.QuranActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.mquran.QuranActivity" on path: DexPathList[[zip file "/data/app/~~hynbSxiLbBBszkZOGN7mmw==/com.example.mquran-lzohw1JV0FF52fn5hJr6Cg==/base.apk"],nativeLibraryDirectories=[/data/app/~~hynbSxiLbBBszkZOGN7mmw==/com.example.mquran-lzohw1JV0FF52fn5hJr6Cg==/lib/arm64, /system/lib64, /system/system_ext/lib64]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3914) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4201) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2438) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8663) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.mquran.QuranActivity" on path: DexPathList[[zip file "/data/app/~~hynbSxiLbBBszkZOGN7mmw==/com.example.mquran-lzohw1JV0FF52fn5hJr6Cg==/base.apk"],nativeLibraryDirectories=[/data/app/~~hynbSxiLbBBszkZOGN7mmw==/com.example.mquran-lzohw1JV0FF52fn5hJr6Cg==/lib/arm64, /system/lib64, /system/system_ext/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218) 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:44) at android.app.Instrumentation.newActivity(Instrumentation.java:1273) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3901) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4201) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2438) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8663) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) 2024-01-02 03:17:22.209 15561-15653 libEGL com.example.mquran
Manifest文件内容
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" > <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:exported="true" 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/AppTheme" tools:targetApi="34"> <activity android:name=".QuranActivity" android:exported="true" android:label="@string/app_name" android:theme="@style/AppTheme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
解决方案
- 核对类文件路径与包名:确认
QuranActivity.java的实际包名是com.example.mquran,文件放置在src/main/java/com/example/mquran/目录下,检查类名拼写(大小写、字母是否有误)。 - 清理重建项目:执行
Build -> Clean Project,再执行Build -> Rebuild Project,手动删除项目根目录下的build文件夹和生成的.apk文件,清除构建缓存。 - 配置MultiDex:如果项目开启了MultiDex,确保
app/build.gradle中正确配置:
同时自定义Application类继承android { defaultConfig { multiDexEnabled true } } dependencies { implementation 'androidx.multidex:multidex:2.0.1' }MultiDexApplication,或在attachBaseContext方法中调用MultiDex.install(this)。 - 检查构建目录标记:确认Android Studio中Module的
java目录被标记为Sources Root(蓝色文件夹),未被排除在构建范围外。 - 调整混淆规则:若开启了代码混淆,在
proguard-rules.pro中添加规则避免QuranActivity被混淆:-keep class com.example.mquran.QuranActivity { *; } - 核对设备架构支持:日志显示设备架构为
arm64,若项目包含Native库,确认build.gradle中ndk.abiFilters包含arm64-v8a,或移除架构限制兼容更多设备。
内容的提问来源于stack exchange,提问作者Reham Safarini
相关产品推荐
相关产品推荐

