Java开发2D游戏遇-source 7不支持Lambda表达式报错如何解决
错误产生原因
Lambda 表达式是 Java 8 版本才正式推出的语法特性,低于 8 的 JDK 版本无法识别该语法。当前你的项目编译配置指定的源码兼容版本为 JDK 7(对应编译参数-source 7),而你代码中EventQueue.invokeLater(() -> { ... })部分使用了 Lambda 写法,因此触发了如下报错:
Lambda expressions are not supported in -source 7, use -source 8 to enable lambda expressions
解决方法
共有两种可选方案,可根据你的实际场景选择:
方案1:升级项目源码兼容版本至 JDK 8 及以上(推荐)
根据你使用的开发环境调整对应配置即可:
- 命令行编译:执行
javac命令时额外添加-source 8 -target 8参数,示例:javac -source 8 -target 8 Application.java - IntelliJ IDEA 环境:
- 打开
File → Project Structure → Project,将Project SDK设置为1.8或更高版本,Project language level同步设置为8或更高 - 进入
Settings → Build, Execution, Deployment → Compiler → Java Compiler,将对应模块的Target bytecode version设置为8或更高
- 打开
- Eclipse 环境:
右键项目选择Properties → Java Compiler,勾选Enable project specific settings,将Compiler compliance level设置为1.8或更高
方案2:替换Lambda写法为JDK7兼容的匿名内部类写法
如果必须在JDK7环境下编译项目,可以将main方法中的Lambda逻辑替换为匿名内部类实现,修改后的代码如下:
public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { Application ex = new Application(); ex.setVisible(true); } }); }
内容的提问来源于stack exchange,提问作者Atmosphere Ixu
相关产品推荐
相关产品推荐

