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

Jetpack Compose预览调用Java模块类时触发ClassNotFoundException

解决Jetpack Compose预览无法加载纯Java/Kotlin库类的问题

问题原因

Jetpack Compose预览的类加载机制与应用正常运行时存在差异,在AGP 8.x版本环境下,纯JVM库默认启用了Java模块系统(JPMS)的路径推断,导致预览进程的类加载器无法识别库中的类,最终抛出ClassNotFoundException。

解决方案

在纯Java/Kotlin库模块的build.gradle.kts中添加禁用模块路径推断的配置,让库以传统类路径方式被加载:

plugins {
    id("java-library")
    id("org.jetbrains.kotlin.jvm")
}

kotlin {
    jvmToolchain(17)
}

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
    // 禁用JPMS模块路径推断,让类以传统方式加载
    modularity.inferModulePath = false
}

补充处理(若上述方案无效)

在Compose所在的Android模块中,显式为预览任务添加纯JVM库的依赖,确保预览进程的classpath包含库的编译产物:

android {
    // 保留原有配置
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion = "1.4.7" // 需与Kotlin 1.8.22版本匹配
    }

    // 添加预览专属依赖配置
    preview {
        dependencies {
            implementation project(':java-common')
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:47:11