OrW*_*rWn 12 lambda android java-8 android-studio
当尝试使用lambda表达式时,我得到了一些Gradle构建错误:
错误:(41,100)错误:-source 1.7不支持lambda表达式(使用-source 8或更高版本启用lambda表达式)
错误:任务':app:compileDebugJava'的执行失败.编译失败; 请参阅编译器错误输出以获取详细信
快速搜索帮助我理解lambda表达式仅支持JDK 1.8,显然我没有使用它.
我的问题是我的计算机上安装了JDK 1.8(我使用Yosemite),在模块设置→SDK位置→JDK位置它说:
但是在设置模块→应用程序→源/目标兼容性中,没有诸如"1.8"之类的选项,只有Java 1.6或1.7的选项.
我知道我可以管理没有匿名功能,但我仍然想解决这个问题.
Jack 现已弃用,Java 8 支持将来将集成到当前工具中。摘自这篇博文\n Android 上 Java 8 语言功能支持的未来:
\n\n\n我们决定将对 Java 8 语言功能的支持直接添加到当前的 javac 和 dx 工具集中,并弃用 Jack 工具链。有了这个新方向,依赖于 Java 类文件格式的现有工具和插件应该可以继续工作。展望未来,Android 构建系统将原生支持 Java 8 语言功能。我们的目标是在未来几周内将其作为 Android Studio 的一部分推出,并且我们希望尽早与您分享这一决定。
\n
新版本的Android Studio(2.1)支持Java 8功能。以下是Android 开发者博客帖子的摘录:
\n\n\n...Android Studio 2.1 版本包括对新Jack 编译器的支持和对Java 8的支持。
\n借助 Jack 编译器,所有版本的 Android 平台都可以使用 lambda、方法引用、编译时类型注释、交集类型和类型推断。默认和静态方法以及可重复注释在 Android N 及更高版本上可用。
\n要在使用 N Developer Preview 进行开发时使用 Java 8 语言功能,您需要使用 Jack 编译器。新建项目向导 [File\xe2\x86\x92 New\xe2\x86\x92 Project] 为面向 N 的项目生成正确的配置。
\n
Android 尚不支持 Java 1.8(它最多只支持 1.7),因此您不能使用 lambda(正如评论之一也提到的那样)。
\n这个答案提供了有关 Android Studio 兼容性的更多详细信息;它指出:
\n\n\n如果你想使用 lambdas,这是 Android 中 Java 8 的主要功能之一,你可以使用 gradle-retrolamba
\n
如果您想了解有关使用的更多信息gradle-retrolambda
,此答案提供了有关执行此操作的大量详细信息。
否则(在我看来这可能是最好的选择),您将需要返回使用anonymous classes
(即在更改为使用 lambda 函数之前您是如何使用它的)。
归档时间: |
|
查看次数: |
7081 次 |
最近记录: |