You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行时无法实例化Kotlin应用:ClassNotFoundException问题求助

运行时致命异常排查:无法实例化DamroApplication类

错误日志

2023-02-10 10:37:04.008 17261-17261/? E/USNET: USNET: appName: lk.ac.kln.mit.stu.mobileapplicationdevelopment
2023-02-10 10:37:04.251 17261-17261/lk.ac.kln.mit.stu.mobileapplicationdevelopment E/AndroidRuntime: FATAL EXCEPTION: main
Process: lk.ac.kln.mit.stu.mobileapplicationdevelopment, PID: 17261
java.lang.RuntimeException: Unable to instantiate application lk.ac.kln.mit.stu.mobileapplicationdevelopment.DamroApplication package lk.ac.kln.mit.stu.mobileapplicationdevelopment: java.lang.ClassNotFoundException: Didn't find class "lk.ac.kln.mit.stu.mobileapplicationdevelopment.DamroApplication" on path: DexPathList[[zip file "/data/app/~~jf7fR-0oBIKxMDmk413RUQ==/lk.ac.kln.mit.stu.mobileapplicationdevelopment-82b_ZM-v8B137LudTn0m0Q==/base.apk"],nativeLibraryDirectories=[/data/app/~~jf7fR-0oBIKxMDmk413RUQ==/lk.ac.kln.mit.stu.mobileapplicationdevelopment-82b_ZM-v8B137LudTn0m0Q==/lib/arm64, /system/lib64, /system/system_ext/lib64]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:1464)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7458)
at android.app.ActivityThread.access$1600(ActivityThread.java:310)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2281)
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:8669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Caused by: java.lang.ClassNotFoundException: Didn't find class "lk.ac.kln.mit.stu.mobileapplicationdevelopment.DamroApplication" on path: DexPathList[[zip file "/data/app/~~jf7fR-0oBIKxMDmk413RUQ==/lk.ac.kln.mit.stu.mobileapplicationdevelopment-82b_ZM-v8B137LudTn0m0Q==/base.apk"],nativeLibraryDirectories=[/data/app/~~jf7fR-0oBIKxMDmk413RUQ==/lk.ac.kln.mit.stu.mobileapplicationdevelopment-82b_ZM-v8B137LudTn0m0Q==/lib/arm64, /system/lib64, /system/system_ext/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52)
at android.app.Instrumentation.newApplication(Instrumentation.java:1177)
at android.app.LoadedApk.makeApplication(LoadedApk.java:1456)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7458) 
at android.app.ActivityThread.access$1600(ActivityThread.java:310) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2281) 
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:8669) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) 
Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Llk/ac/kln/mit/stu/mobileapplicationdevelopment/Hilt_DamroApplication;
at java.lang.VMClassLoader.findLoadedClass(Native Method)
at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
... 15 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "lk.ac.kln.mit.stu.mobileapplicationdevelopment.Hilt_DamroApplication" on path: DexPathList[[zip file "/data/app/~~jf7fR-0oBIKxMDmk413RUQ==/lk.ac.kln.mit.stu.mobileapplicationdevelopment-82b_ZM-v8B137LudTn0m0Q==/base.apk"],nativeLibraryDirectories=[/data/app/~~jf7fR-0oBIKxMDmk413RUQ==/lk.ac.kln.mit.stu.mobileapplicationdevelopment-82b_ZM-v8B137LudTn0m0Q==/lib/arm64, /system/lib64, /system/system_ext/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)

错误核心:系统无法实例化DamroApplication类,同时找不到Hilt自动生成的Hilt_DamroApplication类。

相关代码文件

1. DamroApplication.kt

package lk.ac.kln.mit.stu.mobileapplicationdevelopment

import android.app.Application
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class DamroApplication : Application() {

}

2. 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">

    <application
        android:name=".DamroApplication"
        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.MobileApplicationDevelopment"
        tools:targetApi="31">
        <activitya
            android:name=".activities.ShoppingActivity"
            android:exported="false">
            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activitya>
        <activity
            android:name=".activities.LoginRegisterActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
    </application>

</manifest>

3. 文件夹结构

Folder structure

问题分析与解决方法

核心原因

日志显示两类问题:一是DamroApplication类未被找到,二是Hilt自动生成的代理类Hilt_DamroApplication缺失,大概率是Hilt配置不完整、编译过程未生成必要类,或是Manifest配置错误导致类加载失败。

解决步骤

  1. 修复AndroidManifest中的语法错误
    注意到Manifest中ShoppingActivity的标签写成了<activitya>,这是明显的拼写错误,会导致Manifest解析异常,进而影响Application类的加载。将<activitya>改为<activity>:

    <activity
        android:name=".activities.ShoppingActivity"
        android:exported="false">
        <meta-data
            android:name="android.app.lib_name"
            android:value="" />
    </activity>
    
  2. 检查Hilt的完整配置

    • 项目级build.gradle:确保添加Hilt插件依赖
      buildscript {
          dependencies {
              classpath "com.google.dagger:hilt-android-gradle-plugin:2.44"
          }
      }
      
    • 模块级build.gradle:应用Hilt插件,添加Hilt依赖并启用kapt
      plugins {
          id 'kotlin-kapt'
          id 'dagger.hilt.android.plugin'
      }
      
      dependencies {
          implementation "com.google.dagger:hilt-android:2.44"
          kapt "com.google.dagger:hilt-android-compiler:2.44"
      }
      

    注意:使用的Hilt版本需保持一致,建议使用最新稳定版。

  3. 清理并重建项目
    编译缓存可能导致生成的类未被正确打包,执行以下操作:

    • 在Android Studio中点击Build -> Clean Project,完成后点击Rebuild Project
    • 或者通过命令行执行:./gradlew clean assembleDebug
  4. 验证Dex配置(若开启多Dex)
    如果应用开启了多Dex,需确保DamroApplication被包含在主Dex中:

    • 在模块级build.gradle中启用多Dex:
      android {
          defaultConfig {
              multiDexEnabled true
          }
      }
      dependencies {
          implementation "androidx.multidex:multidex:2.0.1"
      }
      
    • 若自定义了Application类,需继承MultiDexApplication或在attachBaseContext中初始化多Dex:
      override fun attachBaseContext(base: Context?) {
          super.attachBaseContext(base)
          MultiDex.install(this)
      }
      
  5. 确认包路径匹配
    检查DamroApplication的包路径lk.ac.kln.mit.stu.mobileapplicationdevelopment与Manifest中android:name=".DamroApplication"的相对路径是否一致,确保类文件放置在正确的包目录下(从文件夹结构看路径是正确的,但需确认编译后的类是否被正确打包)。


内容的提问来源于stack exchange,提问作者Nawoda Jayasinghe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:55:30