如何在LibGDX项目core模块中使用java.util.stream.Stream
LibGDX core模块启用java.util.stream支持的配置方案
问题核心
core模块当前编译兼容版本为Java 1.7,既无法在编译阶段识别Java 8引入的Stream API语法,也无法生成供各平台共享的对应字节码。即便Android模块单独开启了脱糖适配,core模块自身的代码编译就会直接报错,无法正常调用。
具体修改操作
- 调整core模块的Gradle编译配置
将core模块build.gradle中原有的Java 1.7兼容配置,替换为Java 8版本的兼容设置,修改后的完整基础配置如下:sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' sourceSets.main.java.srcDirs = [ "src/" ] eclipse.project.name = appName + "-core" - 各平台适配校验
- Android端:现有配置已开启
coreLibraryDesugaringEnabled并引入对应脱糖依赖,只要core模块输出的字节码版本锁定为1.8,脱糖工具会自动完成Stream API的调用适配,不需要额外调整Android模块的现有配置。 - 桌面端:只要运行游戏的桌面JRE版本不低于Java 8,即可原生支持Stream API,无需额外适配处理。
- Android端:现有配置已开启
避坑提示
- 不要将core模块的编译兼容版本设置为Java 8以上的版本,过高的字节码版本会导致Android端的脱糖工具无法正常解析,引发打包阶段的报错。
- 改完Gradle配置后记得同步项目,将IDE对应core模块的语言级别调整为Java 8,避免出现IDE层面的语法误报。
- 如果在低版本Android系统运行时出现Stream相关的类加载报错,仅需升级Android模块中
coreLibraryDesugaring的依赖版本至支持全量java.util.streamAPI的版本即可,不需要改动core模块的基础配置。
内容的提问来源于stack exchange,提问作者user123546863
相关产品推荐
相关产品推荐

