Articles of java 8

Android Studio 3.0编译时错误

将Android Studio 2.3.1升级到3.0 Canary2 ,我的项目无法正常运行。我已经阅读了迁移文件 。首先它显示了Gradle Build Success,然后它显示了很多错误编译时间。这是我的Gradle文件和错误输出。任何帮助将不胜感激。 项目的Gradle文件 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { maven { url ‘https://maven.google.com’ } maven { url ‘https://maven.fabric.io/public’ } jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.0-alpha2’ classpath ‘io.fabric.tools:gradle:1.22.1’ classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6’ // NOTE: Do not place your application dependencies […]

带有默认方法的Java 8接口启用Jacoco时无效的方法

我们有一个带有默认方法的接口,我们在Java和Kotlin类中实现了该接口,并且我们提供了非默认方法的实现。 当我们在调试模式(没有testCoverageEnabled = true)运行时,应用程序按预期工作。 但是当我们使用testCoverageEnabled = true运行不同的配置时,应用程序崩溃并出现以下错误 java.lang.NoSuchMethodError: No static method $$triggerInterfaceInit()V in class Lcom/ui/viewholders/CAViewContract$$CC; or its super classes (declaration of ‘ui.viewholders.CAViewContract$$CC’ appears in /data/app/SMCXbiLYvHb1Kk08Kee__g==/base.apk) at home.c.CCFragment.(Unknown Source:0) at home.HomePageCardProvider.getFragment(HomePageCardProvider.java:17) at home.HomeFragment.handleCardFragment(HomeFragment.java:172) 注意: 1。JaCoCo版本:“0.8.0”2。操作系统:Android with minSdk 21 如果我们将minSdk更改为24,并且testCoverageEnabled = true本身,则它正在工作。 我们无法弄清楚确切的问题。

使用gradle-retrolambda和Lightweight-Stream-API过滤Android中的对象列表

我试图在我的Android应用程序中过滤Java中的对象列表,为此我遵循了这个答案 (Java 8建议),但由于Android SDK中不支持Lambdas ,我使用了gradle-retrolambda,但我得到了这个运行时 -错误 java.lang.NoSuchMethodError: No interface method stream()Ljava/util/stream/Stream; in class Ljava/util/List; or its super classes (declaration of ‘java.util.List’ appears in /system/framework/core-libart.jar) 这是我正在使用的代码行: List closedCaseDetailsList = caseDetailsList.stream().filter(item -> item.caseClosed.equals(true)).collect(Collectors.toList()); 我相信它应该工作,因为gradle-retrolambda应该在Java7上处理Lambdas。 接下来,根据Lightweight-Stream-API的用法,我尝试了Lightweight-Stream-API以及gradle-retrolambda并稍微改变了我的代码 List closedCaseDetailsList = Stream.of(caseDetailsList).filter(item -> item.caseClosed.equals(true)).collect(Collectors.toList()); 但它给我一个错误,比Collectors.toList()说 collect (com.annimon.stream.Collector) in Stream cannot be applied to (java.util.stream.Collector<T,capture,java.util.List>) 我也试过显式地将Streamtypes转换为List但这当然没有用。 我尝试了Slack社区,SO聊天室,但找不到解决方案。 我发现问题最接近的是这个问题,但这是一个不同的错误。 谢谢

Android Studio Instant在Android中使用java 8无法运行

使用java 8进行简洁的Lambdaexpression式等但缺点是即时运行不起作用。 buildToolsVersion “23.0.3” compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 如何使用java 8function启用即时运行

升级到Java 8后,Gradle构建将永远存在

我尝试在Android Studio中启用Java 8function,如https://android.com中所示 : defaultConfig { … jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 之后我添加了compile ‘net.sourceforge.streamsupport:streamsupport:1.5.1’并且能够使用lambdas。 自从我完成了这项工作以来,Gradle构建需要永远(我在20分钟后尝试其他解决方案就杀了这个过程)。 我的硬件不是很好,但仍然不是一个可接受的构建时间(它永远不会完成)。 我也试图删除这些更改,但我面临相关的编译错误。 我可以从git中提取以前的应用程序版本,但我宁愿解决这些问题以便能够使用Java 8的function。 有没有人面对这个问题并设法解决它? 谢谢。

在android studio中使用Java 8

我使用android studio,我想使用只能从java 8中获得的lambdaexpression式,当我尝试使用它时,我得到: Lambda expression are not supported at this language level. 那么,我怎样才能在AndroidStudio上改变它?

如何抑制匿名新的runnable()可以替换为lambda

我得到“匿名新的runnable()可以用lambda替换”警告用下面的代码。 final ScrollView sv = (ScrollView) findViewById(R.id.scrollView); sv.post(new Runnable() { @Override public void run() { sv.fullScroll(ScrollView.FOCUS_DOWN); } }); 我非常努力地在Google上搜索,似乎是使用lambdaexpression式重写… final ScrollView sv = (ScrollView) findViewById(R.id.scrollView); Runnable test = () -> sv.fullScroll(ScrollView.FOCUS_DOWN); test.run(); 但是当我尝试运行应用程序时,Android Studio会因错误而停止,如下所示: Error:(78, 40) error: lambda expressions are not supported in -source 1.7 (use -source 8 or higher to enable lambda expressions) 我无法理解为什么Android […]

使用Java 8模块Gradle Android Project

正如我在本文中看到的 , Java 8目前尚未得到Android正式支持。 所以我很感兴趣是否可以使用Java 7构建带有Java 7和Java模块(作为依赖项)的Android模块。 作为一个例子,我正在尝试创建一个Gradle项目,该项目将包含一个Android模块和一个Java模块作为依赖项。 通过为两个模块设置以下compileOptions ,一切正常。 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } 但是,如果我尝试将我的Java模块的compileOptions更改为 compileJava { sourceCompatibility = 1.8 targetCompatibility = 1.8 } 我收到以下错误: Error:Execution failed for task ‘:fc-android:preDexFreeDebug’. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘C:\Program Files\Java\jdk1.8.0_45\bin\java.exe” finished with non-zero exit value 1 那么问题是,实际上可能有用1.7版本编译的Android模块和用1.8编译的依赖Java模块吗? 如果没有,为什么呢? 更新: Retrolamba for Gradle (由@Saeed提到)很好,但是他们只支持lambda,所以不能访问Stream API , […]

错误:Jack需要支持java 8语言function。 启用Jack或删除sourceCompatibility JavaVersion.VERSION_1_8

正如developer.android网站中提到的那样 “根据本公告,Jack工具链已被弃用。如果您的项目依赖于Jack,您应该迁移到使用Android Studio默认工具链中内置的Java 8支持。” 我需要使用lambdaexpression式,所以我已经禁用了jack选项,但是当我编译我的代码时,我收到以下错误 Error:Jack is required to support Java 8 language features. Either enable Jack or remove sourceCompatibility JavaVersion.VERSION_1_8. 下面是我的build.gradle文件的屏幕截图

Dx不支持的类文件版本52.0 …在解析com / example / test1 / BuildConfig.class 时

尝试使用JDK 1.8和eclipse neon构建项目时出现以下错误: [2016-07-03 02:40:59 – Test1] Dx PARSE ERROR: [2016-07-03 02:40:59 – Test1] Dx unsupported class file version 52.0 …while parsing com/example/test1/BuildConfig.class [2016-07-03 02:40:59 – Test1] Dx PARSE ERROR: [2016-07-03 02:40:59 – Test1] Dx unsupported class file version 52.0 …while parsing com/example/test1/MainActivity.class [2016-07-03 02:40:59 – Test1] Dx PARSE ERROR: [2016-07-03 02:40:59 – Test1] Dx […]