-source 1.6 不支持 lambda 表达式

问题描述

当我运行 ionic cordova build android 时,出现以下错误

D:\Projects\ionic-bt-device-application\platforms\android\src\com\moust\cordova\videoplayer\VideoPlayer.java:73: error: lambda expressions are not supported in -source 1.6
            cordova.getActivity().runOnUiThread(() -> openVideoDialog(path,options));
                                                   ^
  (use -source 8 or higher to enable lambda expressions)
D:\Projects\ionic-bt-device-application\platforms\android\src\de\appplant\cordova\plugin\background\BackgroundMode.java:314: error: lambda expressions are not supported in -source 1.6
        cordova.getActivity().runOnUiThread(() -> webView.loadUrl("javascript:" + js));
                                               ^
  (use -source 8 or higher to enable lambda expressions)
D:\Projects\ionic-bt-device-application\platforms\android\src\de\appplant\cordova\plugin\background\BackgroundModeExt.java:175: error: lambda expressions are not supported in -source 1.6
                    getApp().runOnUiThread(() -> {
                                              ^
  (use -source 8 or higher to enable lambda expressions)
D:\Projects\ionic-bt-device-application\platforms\android\src\de\appplant\cordova\plugin\background\BackgroundModeExt.java:297: error: method references are not supported in -source 1.6
                activity.runOnUiThread(dialog::show);
                                               ^
  (use -source 8 or higher to enable method references)
4 errors
:compileDebugJavaWithJavac Failed

我的java版本是8,为什么还问use -source 8

enter image description here

解决方法

lambda 只能从源 Java 8 获得。

即使 JDK 版本为 1.8,您也指示编译器将源视为 1.6。由于 1.6 语言规范没有 lambda,因此会导致错误。

来源

-源码发布

指定接受的源代码版本。

javac

编译器可以支持的语言特性由source决定(假设编译器版本高于或等于源版本)