繁体   English   中英

React Native java.lang.ClassNotFoundException:找不到类

[英]React Native java.lang.ClassNotFoundException: Didn't find class

该应用程序在启动时在设备上崩溃,这是日志:

注意我用 com.myappName 替换了我原来的 ' com.appname '

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 存储库后,这开始发生

这是我所做的:

  1. 克隆的 git 存储库
  2. npm install --save-exact
  3. 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>

模拟器是可调整大小的 API 33 x86_64

谢谢

检查您的 MainActivity.java 和 MainApplication.java 文件的第一行,它应该是com.myappName

我缺少 Java 文件。 通过使用react-native-eject重建androidios文件夹修复了该问题

npm install react-native-eject
sudo rm -rf android ios
npx react-native eject

确保之后在.java文件中手动替换包名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM