使用Compose Multiplatform构建可执行JAR文件报错
错误根因
报错是Compose编译器与Kotlin版本不匹配导致的。手动通过IDEA的JAR工件向导从jvmMain构建包时,不会自动对齐Compose Multiplatform要求的编译器版本、依赖链路,不仅容易触发这类兼容错误,手动配置的工件还经常漏带运行时依赖,就算构建完成也无法正常启动。
正确构建可执行JAR的方法
不要手动创建IDEA JAR工件,直接使用Gradle配置官方支持的打包任务,步骤如下:
- 第一步:对齐版本
先确认项目根目录build.gradle.kts中引入的Compose Multiplatform插件版本和Kotlin版本是官方匹配的组合,禁止单独升级Kotlin或Compose插件版本,二者的对应关系随Compose Multiplatform发布说明同步更新。
注意:Compose Multiplatform不需要手动单独引入androidx.compose.compiler依赖,如果你之前手动加过相关compiler配置,直接删掉,版本由Compose Multiplatform插件自动管理。 - 第二步:配置JVM打包参数
打开JVM模块对应的build.gradle.kts(单模块JVM项目直接改根目录的构建脚本),先指定程序入口类,再配置胖JAR打包规则:compose { jvm { // 替换为你自己项目的入口类全限定名 mainClass = "com.your.package.MainKt" } } tasks.jar { manifest { attributes["Main-Class"] = "com.your.package.MainKt" } // 将所有运行时依赖打入单个JAR from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) }) { exclude("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA") } duplicatesStrategy = DuplicatesStrategy.EXCLUDE } - 第三步:执行构建
不需要走IDEA的工件构建流程,直接在终端执行Gradle命令:
构建完成的可执行JAR存放在./gradlew jvmJarjvm/build/libs/目录下,直接运行java -jar 生成的jar文件名.jar即可启动。
残留报错排查
如果配置完成后还是出现编译器不兼容的报错,按顺序操作:
- 打开IDEA菜单
File -> Invalidate Caches...,勾选清除缓存后重启IDE - 删除项目根目录下的
.gradle文件夹,重新同步Gradle依赖 - 确认构建使用的JDK版本为17及以上,Compose Multiplatform 1.5+版本最低要求JDK17作为构建环境
内容的提问来源于stack exchange,提问作者dzyubaka
相关产品推荐
相关产品推荐

