【问题标题】:Lambda expression in Android Library Module not workingAndroid 库模块中的 Lambda 表达式不起作用
【发布时间】:2019-06-26 16:15:05
【问题描述】:

我有一个使用 jdk 8 并启用 Jack Options 的 android 应用程序模块。然后我将其转换为 Android 库模块。然后我必须从构建 gradle 中删除 Jack Options。现在,当我尝试构建 AAR 文件时,Lambda 表达式给了我以下错误。

Error:(59, 25) error: cannot find symbol method metafactory(Lookup,String,MethodType,MethodType,MethodHandle,MethodType)

给出这个错误的代码是,

Runnable r= () -> {
      appManager.startApp(definition,identifier);
};

我的构建 Gradle 是

Apply plugin: 'com.android.library'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        minSdkVersion 18
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"

    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}

这个问题的原因是什么?

【问题讨论】:

  • 你找到解决办法了吗??
  • @chamthabeysinghe 你找到解决方案了吗?

标签: java android lambda android-service


【解决方案1】:

在我的机器上,我缺少文件 $ANDROID_SDK/build-tools/28.0.3/core-lambda-stubs.jar,因此我不得不使用 Android Studio SDK 管理器重新安装版本 28.0.3 的构建工具。

(我必须检查“显示包详细信息”才能查看构建工具版本的完整列表)

【讨论】:

  • 非常感谢您写这篇文章!我从没想过 sdk 会像这样错过一些文件。
  • 非常感谢您。你救了我的命!我挣扎了一天多,想知道为什么会这样!重新安装构建工具也为我解决了这个问题。
  • 我如何安装缺少的 core-lamba-stub.jar?
  • stackoverflow.com/questions/59872961/… ,缺少 core-lamba-stubs.jar
【解决方案2】:

您忘记应用复古 lambda 插件。

将此行添加到您的 build.gradle 文件中:

apply plugin: 'me.tatarka.retrolambda'

【讨论】:

  • 这在 Java 1.8 中是不必要的,Android 文档明确指出如果你使用 Java 1.8 就不要使用它
猜你喜欢
  • 2015-06-21
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多