问题标签 [retrolambda]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 任务“:app:compileRetrolambdaDebug”执行失败
我使用 retrolambda 很长时间,但突然他停止了我所有项目的工作。我重新安装了jdk,但没有帮助。我在谷歌没有找到答案,我希望你能帮助我。我的 gradle 文件:build.gradle(应用程序):
build.gradle(项目):
摇篮堆栈跟踪:
android - Retrolambda/多模块混淆
我正在使用retrolambda,一些测试让我很困惑。
我的理解是:
- 使用 retrolambda 我可以使用一些 java8 语言功能(例如 lambdas),但不能使用 java 8 类:例如,没有任何其他库,我不能使用 java8 流:HashSet<>.stream()不可用
- 我用 java-8 特性(lambdas)编写我的代码。源代码被翻译成 java8-class 文件,然后 retrolambda 启动并将 java8-class 文件转换为 java7-class 文件,这些文件可以在较旧的 Android 版本(例如 Android 6)上执行
所以,我建立了一个小型测试项目来测试我的假设,有些事情我不确定。我希望有人能澄清一下。这是我的源代码的标签,我将参考。
- 在多模块 android 应用程序(一个 android 模块和一个纯 java 模块)中,我们必须将retrolambda gradle 插件应用于所有想要使用 java8 功能的模块(app 和 java)
- 首先 java 模块会被 javac 编译成 java8-class 文件,retrolambda 会将它们转换成 java7 并构建一个 jar
- 那么 app 模块将按照与 java 模块相同的方式编译:但现在我们得到的是 apk 而不是 jar:一切都是 java7 并且可以愉快地在 Android 6 上使用
- 在我的源代码中,我有一些单元测试,它们故意使用不应该工作的 java8 代码:我调用
HashSet<>.stream()
- Android Studio 和模拟器:所有测试都有效
- 我猜Android Studio & Emulators 甚至根本不使用retrolambda,只是将所有东西编译并运行到java8
- 有没有办法改变它?:例如,如果任何测试已经发现了这些问题,那就太好了
- Gradle 命令行构建:
gradle clean app:test
: 单元测试工作gradle clean java:test
: 单元测试失败
- 我不知道为什么 app 模块中的测试有效而 java 模块中的测试失败:为什么会这样?
- Android Studio 和模拟器:所有测试都有效
- 正如预期的那样,在装有 Android 6 的真实设备上,一切都崩溃了
android - 使用 Jack 和 Retrolambda 运行应用程序时出现问题
我最近在使用 Retrolambda 时尝试在我的应用程序中调试时遇到了很多问题,因为我想在我的 Gradle 中包含 Jack 以进行调试。
因此,我一直在经历这个错误,但我仍然没有找到解决它的方法。
我检查了不同的帖子以寻找解决方案:
Android Studio:Gradle - 构建失败 - 任务“:dexDebug”执行失败
使用 jack 时,Lambda 表达式在 Android 中因 IncompatibleClassChangeError 而崩溃
建议为运行 jack 的 Gradle 守护进程使用更大的堆
但是没有一个解决方案可以解决我的问题。现在我的 Gradle 看起来像:
我的appgradle
:
android - Android RetroLamda 实现问题
我是在 Android 开发中使用 RetroLamda 的新手。我了解到,选择方法取决于参数类型。我有如下界面:
现在共同实现:
如何在 RetroLamda 表达式中处理两种方法具有相同输入类型的这种情况?
java - Retrolambda 有什么用?
Retrolambda 有什么用?
我们在哪里使用 Retrolambda 框架?
java - 找不到封闭方法'void lambda$getTestFlowable$0(io.reactivex.FlowableEmitter)'
我在我的项目中使用了 RxJava2 和 Retrolambda,有一段时间我感觉很好,将回调包装到 flowables 中,但是有一天我遇到了这个错误,如果我尝试在这个非常简化的代码片段上运行 proguard:
然后我会收到这个警告,它使我的构建失败:警告:com.yandex.testfield.MainActivity$1:在程序类 com.yandex 中找不到封闭方法 'void lambda$getTestFlowable$0(io.reactivex.FlowableEmitter)'。 testfield.MainActivity
目前,我看到这个问题的两个临时解决方案:
不要使用 lambda 并改用匿名类
/li>- 在包含上面列出的方法的类上禁用 proguard
但我仍然想知道为什么会这样?这是 RxJava2\Retrolambda\Proguard 中的错误吗?
android - 将 Retrolambda 替换为 Android Studio 3.0 Java 8 内置功能
在我的项目中,我使用了流行的库retrolambda。我刚刚下载了新的 Android Studio 3.0 Canary 1。
我已经更新了我的项目以使用新版本的 Gradle 等。一切都很好。
Android Studio 3 中的新增功能内置了对一些 Java8 功能的支持。新 AS3 建议删除 retrolambda 并使用这些功能。
我已删除 retrolambda,Gradle 构建成功,但应用程序因此错误而崩溃(在有 lambda 的地方)
我在我的项目中使用 RxJava2。我不确定这是否与它有关,但在我的情况下,Java8 的内置功能似乎不起作用。也许我需要在“某处”设置一些东西?
我的 Gradle 文件
根项目
应用模块
java - Retrolambda 和 Web 应用程序
我想使用 Java 8 提供的 lambda 表达式。但是,我仅限于 JRE 6。我知道 retrolambda 可以对代码进行反向移植。但是,是否可以将 retrolambda 用于 Web 应用程序(.war)?实际上,我想编写使用 lambda 表达式的代码,使用我的 Eclipse Neon 开发一个必须在 Tomcat 6 上运行的 Web 应用程序。那么,retrolambda(或其他东西)可以帮助我完成这项任务吗?
android - RetroLamba 不适用于 android studio
我已将 retrolambda 添加到我的 android 项目中,但是当我尝试运行该项目时,它显示以下错误。
错误:任务“:app:compileRetrolambdaDebug”执行失败。启动进程 'command 'C:\Program Files\Java\jdk1.8.0_71\bin\java.exe' 时出现问题
我已添加库如下
在 build.gradle(项目文件)下的依赖项
在 build.gradle(应用程序模块)文件中,我已将其应用为插件。
项目构建没有错误,但是当我尝试运行它时,它显示了上述错误。这里有什么问题?
android - 从 rxjava retrolambda 表达式转换为经典表达式
我使用 retrolambda 表达式
一切正常。由于 Roboelectric 测试,我需要将 retrolambda 表达式转换为经典表达式。我努力了
我有错误无法解析方法“订阅(匿名 rx.functions.Action1(java.lang.object)”。