Android编译报错:Class module-info缺失父类型(JOML依赖相关)
解决JOML依赖引发的"Illegal class file: Class module-info is missing a super type"错误
这个问题我之前帮朋友排查过,本质是旧版Android构建工具对Java 9+的模块系统(JPMS)支持不完善导致的。
问题原因
你使用的JOML 1.9.9版本已经引入了Java平台模块系统的module-info.java文件,而你的Android Studio 3.1(对应Gradle版本通常是4.4左右)和构建工具27.0.3是基于Java 8的编译环境,无法正确识别和处理Java 9+新增的module-info类文件,因此抛出这个错误。
快速解决方案(推荐)
直接降级JOML到不包含JPMS模块的版本——JOML是从1.9.9开始添加module-info的,所以你可以改用1.9.8版本:
修改你的build.gradle(Module级别)中的依赖配置:
dependencies { implementation fileTree(include: '*.jar', dir: 'libs') // 替换为1.9.8版本 implementation 'org.joml:joml:1.9.8' // 其他依赖... }
修改完成后,执行Clean Project -> Rebuild Project,这个错误应该就能消失了。
备选方案(如果需要新版本JOML)
如果你必须使用JOML 1.9.9及以上版本,需要升级你的Android构建环境:
- 将Android构建工具版本升级到
28.0.3或更高 - 将Gradle版本升级到
4.9或更高(对应Android Studio 3.3及以上版本) - 同时确保你的项目编译选项设置为Java 8或更高:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
不过这个方案需要注意,升级构建环境可能会导致其他旧依赖出现兼容性问题,需要逐一排查验证。
内容的提问来源于stack exchange,提问作者AlienJim
相关产品推荐
相关产品推荐

