java.lang.RuntimeException:无法实例化应用程序类 z

问题描述 投票:0回答:1

我正在开发一个使用 Hilt 进行依赖注入的 Android 应用程序,但是当我运行该应用程序时,我的

ClassNotFoundException
类会得到一个
MainApp
。这是 logcat 错误消息:

进程:com.nat.abudawood_internal_hr,PID:22193 java.lang.RuntimeException:无法实例化应用程序com.nat.abudawood_internal_hr.MainApp包com.nat.abudawood_internal_hr:java.lang.ClassNotFoundException:在路径上找不到类“com.nat.abudawood_internal_hr.MainApp”:DexPathList[[ zip文件“/data/app/~~~yzrf2rbalzhqdkzsuwqzaa=/com.nat.abudawood_internal_hr-rtyasvkozlg4l2qyutxhra ==/base.apk.apk.apk“dimbase.apk”dimbase.apk“ nat.abudawood_internal_hr- RtyaSVKozlG4L2qYUTxHRA==/lib/arm64, /system/lib64, /system/system_ext/lib64]] 在 android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1574) 在 android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1503) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:7558) 在 android.app.ActivityThread.-$$Nest$mhandleBindApplication(来源未知:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2400) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loopOnce(Looper.java:226) 在 android.os.Looper.loop(Looper.java:313) 在 android.app.ActivityThread.main(ActivityThread.java:8762) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) 原因:java.lang.ClassNotFoundException:在路径上找不到类“com.nat.abudawood_internal_hr.MainApp”:DexPathList[[zip文件“/data/app/~~Yzrf2RBaLzHqDKZsUwqZaA==/com.nat.abudawood_internal_hr-RtyaSVKozlG4L2qYUTxHRA” ==/base.apk"],nativeLibraryDirectories=[/data/app/~~Yzrf2RBaLzHqDKZsUwqZaA==/com.nat.abudawood_internal_hr-RtyaSVKozlG4L2qYUTxHRA==/lib/arm64,/system/lib64,/system/system_ext/lib64]] 在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在 android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76) 在 androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52) 在 android.app.Instrumentation.newApplication(Instrumentation.java:1232) 在 android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1566) 在 android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1503) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:7558) 在 android.app.ActivityThread.-$$Nest$mhandleBindApplication(来源未知:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2400) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loopOnce(Looper.java:226) 在 android.os.Looper.loop(Looper.java:313) 在 android.app.ActivityThread.main(ActivityThread.java:8762) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) 已抑制:java.lang.NoClassDefFoundError:解析失败:Lcom/nat/abudawood_internal_hr/Hilt_MainApp; 在 java.lang.VMClassLoader.findLoadedClass(本机方法) 在 java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:363) ... 16 更多 原因:java.lang.ClassNotFoundException:在路径上找不到类“com.nat.abudawood_internal_hr.Hilt_MainApp”:DexPathList[[zip文件“/data/app/~~Yzrf2RBaLzHqDKZsUwqZaA==/com.nat.abudawood_internal_hr-RtyaSVKozlG4L2qYUTxHRA” ==/base.apk"],nativeLibraryDirectories=[/data/app/~~Yzrf2RBaLzHqDKZsUwqZaA==/com.nat.abudawood_internal_hr-RtyaSVKozlG4L2qYUTxHRA==/lib/arm64,/system/lib64,/system/system_ext/lib64]] 在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312)`

代码片段:

MainApp
@HiltAndroidApp
class MainApp : Application() {
}

Manifest
<application
    android:name=".MainApp"
    ...
</application>

Gradle Dependencies (app)
    // Hilt
    implementation("com.google.dagger:hilt-android:"2.44")
    ksp("com.google.dagger:hilt-android-compiler:"2.44")
    ksp("androidx.hilt:hilt-compiler:1.1.0")
    implementation("androidx.hilt:hilt-navigation-compose:1.1.0")

Gradle Dependencies (project)
plugins {
    id("com.android.application") version "8.1.2" apply false
    id("org.jetbrains.kotlin.android") version "1.9.10" apply false
    id("com.google.dagger.hilt.android") version "2.44" apply false
    id("com.google.devtools.ksp") version "1.9.10-1.0.13" apply false
}

我正在使用 Android Studio Giraffe | 2022.3.1 补丁 2

我尝试过的:

  • 检查了
    AndroidManifest.xml
    中的包名称。
  • 在 Android Studio 中清理并重建项目。
  • 确保 Hilt 设置正确。
android kotlin classnotfoundexception
1个回答
0
投票

我找到了解决该错误的方法。 我将 Hilt 版本从

2.44
更改为
2.48

Gradle (app)
    implementation "com.google.dagger:hilt-android:2.48"
    ksp "com.google.dagger:hilt-android-compiler:2.48"
    ksp 'androidx.hilt:hilt-compiler:1.0.0'
    implementation 'androidx.hilt:hilt-navigation-compose:1.0.0'

Gradle (project)
    id("com.google.dagger.hilt.android") version "2.48" apply false
© www.soinside.com 2019 - 2024. All rights reserved.