React Native启动崩溃:java.lang.ClassNotFoundException异常求助
问题
App启动时崩溃,错误日志如下:
07-20 13:10:05.520 5376 5376 E AndroidRuntime: FATAL EXCEPTION: main 07-20 13:10:05.520 5376 5376 E AndroidRuntime: Process: com.myappName, PID: 5376 07-20 13:10:05.520 5376 5376 E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate application com.myappName.MainApplication package com.myappName: java.lang.ClassNotFoundException: Didn't find class "com.myappName.MainApplication" on path: DexPathList[[zip file "/data/app/~~jMKAsYSvEjMZSEi2dXirHg==/com.myappName-u02x8yQYisyfG6ITJEv3UA==/base.apk"],nativeLibraryDirectories=[/data/app/~~jMKAsYSvEjMZSEi2dXirHg==/com.myappName-u02x8yQYisyfG6ITJEv3UA==/lib/x86_64, /data/app/~~jMKAsYSvEjMZSEi2dXirHg==/com.myappName-u02x8yQYisyfG6ITJEv3UA==/base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64]] 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1463) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1392) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6740) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7892) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.myappName.MainApplication" on path: DexPathList[[zip file "/data/app/~~jMKAsYSvEjMZSEi2dXirHg==/com.myappName-u02x8yQYisyfG6ITJEv3UA==/base.apk"],nativeLibraryDirectories=[/data/app/~~jMKAsYSvEjMZSEi2dXirHg==/com.myappName-u02x8yQYisyfG6ITJEv3UA==/lib/x86_64, /data/app/~~jMKAsYSvEjMZSEi2dXirHg==/com.myappName-u02x8yQYisyfG6ITJEv3UA==/base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64]] 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:379) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:312) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.app.Instrumentation.newApplication(Instrumentation.java:1232) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1455) 07-20 13:10:05.520 5376 5376 E AndroidRuntime: ... 11 more
项目此前在Mac及旧Linux系统可正常运行,全新Linux发行版克隆仓库后出现问题,操作步骤:
- 克隆Git仓库
- 执行
npm install --save-exact - React Native/Android环境配置正确,无相关报错
相关配置文件:
android/app/build.gradle
defaultConfig { applicationId "com.myappName" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 20 versionName "2.0" }
/android/app/src/main/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.myappName"> <uses-permission android:name="android.permission.INTERNET" /> <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
使用模拟器:Resizeable API 33 x86_64
解决方案
针对ClassNotFoundException导致的启动崩溃,按以下步骤排查修复:
清理并重建项目
- 执行React Native清理:
npx react-native clean - 进入android目录执行Gradle清理:
./gradlew clean - 回到根目录重新安装依赖:
npm install --save-exact - 重新构建运行:
npx react-native run-android
- 执行React Native清理:
配置Dex分包
在android/app/build.gradle的android块中添加Dex支持:android { defaultConfig { // 保留原有配置,新增以下行 multiDexEnabled true } } dependencies { // 添加multidex依赖 implementation 'androidx.multidex:multidex:2.0.1' }修改后重新执行清理和构建命令。
检查文件大小写
Linux系统区分文件名大小写,确认MainApplication.java/MainApplication.kt文件名与代码中引用一致,且目录结构为android/app/src/main/java/com/myappName/MainApplication,包名和路径完全匹配。清除Gradle缓存
删除本地Gradle缓存目录:rm -rf ~/.gradle/caches,之后重新构建项目,避免缓存导致的构建异常。指定ABI支持
在android/app/build.gradle的defaultConfig中添加ABI配置,确保模拟器的x86_64架构被支持:defaultConfig { // 保留原有配置,新增以下行 ndk { abiFilters 'x86_64', 'armeabi-v7a', 'arm64-v8a' } }
内容的提问来源于stack exchange,提问作者x24dsa
相关产品推荐
相关产品推荐

