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

设置Gradle SourceSets后Android应用抛出NoClassDefFoundError问题排查

问题:SourceSets配置后编译成功但运行时找不到类

项目结构

app
-src
--main
---java
----com.example.myapplication
-----MainActivity.kt
--sample2
---java
----com.example.myapp.legacy
-----LegacyFile.java

相关代码

LegacyFile.java

package com.example.myapp.legacy;

public class LegacyFile {

}

MainActivity.kt(关键代码)

override fun onCreate(savedInstanceState: Bundle?) {
    // ... 其他代码
    val legacyFile = LegacyFile()
} 

配置的SourceSets

在app/build.gradle.kts中添加了以下配置:

android {
    // ... 其他配置
    sourceSets.getByName("main").apply {
        kotlin.setSrcDirs(listOf("src/sample2/java"))
    } 
}

运行时异常

FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 2436
java.lang.NoClassDefFoundError: Failed resolution of:
Lcom/example/myapp/legacy/LegacyFile;
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:25)
.....
Caused by: java.lang.ClassNotFoundException: Didn't find class
"com.example.myapp.legacy.LegacyFile" on path: DexPathList[[dex file
"/data/data/com.example.myapplication/code_cache/.overlay/base.apk/classes5.dex",
zip file
"/data/app/~~5E7UPyWAZdlsGbzLHVOIJw==/com.example.myapplication-kmtHz5UXr_gzaXYqPtpKyA==/base.apk"],nativeLibraryDirectories=[/data/app/~~5E7UPyWAZdlsGbzLHVOIJw==/com.example.myapplication-kmtHz5UXr_gzaXYqPtpKyA==/lib/x86_64,
/system/lib64, /system_ext/lib64]]

异常现象补充

检查APK文件时,确认LegacyFile类已存在(Android Studio APK查看器显示该类)

问题

请问我哪里操作出错了?


解答

错误原因

  1. 配置了错误的源码集类型:LegacyFile是Java文件,你却将其目录配置到了Kotlin源码集(kotlin.setSrcDirs),这会导致Java文件的编译逻辑异常。
  2. 使用了替换而非添加目录的方法:setSrcDirs会直接覆盖默认的源码目录,而非追加新目录。虽然编译阶段可能能找到文件,但运行时类的打包路径或类加载逻辑会出现问题。

修复方案

修改app/build.gradle.kts中的SourceSets配置,改为追加Java源码目录:

android {
    // ... 其他配置
    sourceSets.getByName("main") {
        // 添加额外的Java源码目录,保留原有默认目录
        java.srcDir("src/sample2/java")
    }
}

如果后续需要添加Kotlin源码目录,同样使用kotlin.srcDir("xxx")而非setSrcDirs,避免覆盖原有目录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:43:11