当前位置: 首页 > 知识库问答 >
问题:

如何为android6(API23)配置retrolambda

吴浩博
2023-03-14

我想为我的项目添加Java8支持。我找到的唯一合适的解决方案是retrolambda gradle插件项目。这是我的身材。项目和模块的gradle文件

注意:请不要建议迁移到Android Studio 3,因为我想了解它为什么不工作。

项目build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'me.tatarka:gradle-retrolambda:3.7.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

模块构建。格拉德尔

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.test.test"
        minSdkVersion 15
        targetSdkVersion 23
        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
    }
}

retrolambda {
    javaVersion JavaVersion.VERSION_1_7
    defaultMethods true
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    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'
}

这个应用程序本身非常简单。它只有一个默认活动,带有Java8代码,如下所示:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        List<String> strings = new ArrayList<>();
        strings.add("Hello");
        strings.add("World");
        strings.stream().forEach(System.out::println);
    }
}

启动应用程序时,我发现以下错误:

致命异常:主进程:com。斯莱什。mtbbank,PID:25338爪哇。lang.NoSuchMethodError:没有接口方法stream()Ljava/util/stream/stream;在Ljava/util/List类中;或者它的超类(声明'java.util.List'出现在/system/framework/core libart.jar中)在com上。斯莱什。mtbbank。主要活动。android上的onCreate(MainActivity.java:19)。应用程序。活动android上的performCreate(Activity.java:6303)。应用程序。仪器。android上的callActivityOnCreate(Instrumentation.java:1108)。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:2402)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2509)。应用程序。活动线程。在Android上访问1000美元(ActivityThread.java:153)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1373)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:102)。操作系统。活套。android上的loop(Looper.java:154)。应用程序。活动线程。java上的main(ActivityThread.java:5529)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:739)。Android内部的操作系统。合子岩。main(ZygoteInit.java:629)

错过了什么?知道它为什么不起作用吗?

提前谢谢!

共有1个答案

霍浩皛
2023-03-14
strings.stream().forEach(System.out::println)

Retro Lambda只做其名称所暗示的事情:它允许您使用Lambda。它不支持流。有一些库可以对流API进行后端口,但retrolambda没有。

 类似资料:
  • 问题内容: 突然在JUnit测试期间这种情况一直发生。一切正常,我编写了一些新测试,并且发生了此错误。如果我还原它,它不会消失。这是为什么? 问题答案: 您(直接或间接)编写的新测试使用 使用Log4j记录的类 。 需要配置Log4J才能使此日志正常运行。 将 log4j.properties (或log4j.xml)文件放在 测试类路径 的 根目录中 。 它应该具有一些基本配置,例如 默认情况下

  • 我试图在postgresql中使用HikariCP,但我在任何地方都找不到postgresql的配置。 请给我指出任何示例postgresql与HikariCP或任何配置教程相同。 我试着像下面那样使用它,但它不起作用,然后我意识到它是为MySQL设计的

  • 也许我做错了什么。 CORS策略阻止从来源“https://www.keycloak.org”访问“https://accounts.zoodexchange.com/auth/realms/development/protocol/openid-connect/token”处的XMLHttpRequest:请求的资源上没有“access-control-allow-orgin”标头。 您可以使用

  • 问题内容: 这是MySQL的配置文件: 为SQL Server 2005指定什么?我这样做是这样的: 我的问题更确切地说是如何指定必须连接的数据库? 在MySQL中,我曾经这样做: 问题答案: 特定于数据库的 属性是: :JDBC驱动程序类 :JDBC URL :数据库用户 :数据库密码 :Hibernate的类名,它允许Hibernate生成针对特定关系数据库优化的SQL。 要更改数据库,您必须

  • 问题内容: 这是MySQL的配置文件: 为SQL Server 2005指定什么?我这样做是这样的: 我的问题更确切地说是如何指定必须连接的数据库? 在MySQL中,我曾经这样做: 问题答案: 特定于数据库的 属性是: :JDBC驱动程序类 :JDBC URL :数据库用户 :数据库密码 :Hibernate的类名称,它允许Hibernate生成针对特定关系数据库优化的SQL。 要更改数据库,您必

  • 我在Pycharm中使用mac OS Sierra 10.12.3和Pycharm社区版2016.3.2我在使用Python 2.7.11并尝试运行以下程序 导入pandas作为pd它给我错误,说没有名为pandas的模块 所以我去了终端,输入了pip 以下是回应 Brians MBP:~Brians$pip安装pandas要求已满足:pandas in./miniconda3/lib/pytho