【发布时间】:2018-07-05 10:07:11
【问题描述】:
我在尝试使用 lambda 表达式时遇到此错误。
错误:
错误:(122, 42) 错误:-source 1.7 不支持 lambda 表达式 (使用 -source 8 或更高版本来启用 lambda 表达式)
我该如何解决它注意我的android studio是3.0
【问题讨论】:
标签: android lambda android-gradle-plugin
我在尝试使用 lambda 表达式时遇到此错误。
错误:
错误:(122, 42) 错误:-source 1.7 不支持 lambda 表达式 (使用 -source 8 或更高版本来启用 lambda 表达式)
我该如何解决它注意我的android studio是3.0
【问题讨论】:
标签: android lambda android-gradle-plugin
将以下代码添加到您的应用级 gradle:
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
【讨论】:
这是因为您可能正在使用 Java 7,而实际上,Retrolambda 是一个我们可以与 Java 8 lambda expressions 一起使用的库。
那么如何设置:-
将以下内容添加到您的 project’s main build.gradle
classpath 'me.tatarka:gradle-retrolambda:3.2.3'
然后将其添加到 your application module’s build.gradle
apply plugin: 'me.tatarka.retrolambda'
那么我们需要将这些行添加到your application module’s build.gradle
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
完成了,你可以像下面这样使用它:-
例如。)单击带有 Retrolambda 的按钮。
// RETROLAMBDA WAY
clickMeBtn.setOnClickListener(view ->
Toast.makeText(MainActivity.this,
"This is the way to click a button to make a toast with RetroLambda !", Toast.LENGTH_LONG).show());
匿名类new View.OnClickListener()可以替换为lambda。
【讨论】:
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.sanjay.sanjay"
minSdkVersion 15
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
在 android studio 的 app.gradle 文件中添加这样的内容
【讨论】:
将以下代码块添加到您的应用级 gradle 文件中
android {}属性
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
喜欢
android {
...
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
}
【讨论】:
使用以下代码并单击同步按钮,然后您的错误将得到修复
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
}
【讨论】: