问题标签 [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.

0 投票
1 回答
1069 浏览

android - 在android studio 1.0中出现retrolambda错误

我在 android studio 1.0 工作

gradle 文件显示此错误:

任务“:app:compileRetroLambdaDebug”执行失败

// 顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。

我还必须在 gradle 文件中进行哪些更改。请提出一些建议...

0 投票
2 回答
1942 浏览

java - 编译时的 java.lang.NoSuchMethodError

我正在尝试编译一个 Android 项目,但没有成功。错误信息是:

任务 ':mobile:_compileAppDebug' 执行失败。

java.lang.NoSuchMethodError: com.google.auto.common.MoreTypes.asTypeElements(Ljavax/lang/model/util/Types;Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableSet;

这是我的模块的 gradle 依赖项,我在其中指定了许多库,包括 google Auto:

当我查看依赖项时,我认为我只需要 google auto 值,因为这是缺少的方法所在的位置,但添加提供的方法并不能解决问题。

项目 gradle 文件包含 retrolambda 插件

谁能帮我确定哪些依赖项导致编译错误?有趣的是,当我将 gradle 文件复制到一个空项目中时,一切都运行良好。

0 投票
2 回答
6915 浏览

lambda - Java8 lambda 是否像匿名类一样维护对其封闭实例的引用?

我们知道匿名类维护对其封闭实例的引用,这可能导致 Android 上的上下文泄漏。

由于retrolambda将 lambda 向后移植到 Java7,因此值得一试。

似乎Java8 lambdas没有这个问题,但我找不到任何官方信息。

有什么线索吗?

0 投票
2 回答
7326 浏览

android - Retrolambda:使用带有 retrolambda 的 lambda 表达式时,Lint 崩溃

我正在尝试将retrolambdagradle-retrolambda插件一起使用。一般来说它工作正常,但是当我编译发布时,lint阶段失败并出现异常:

有什么可做的吗?当然,一个简单的工作/解决方法是禁用lint检查释放。但我正在寻找解决方案,允许保留lint.

以下是应用程序的模块build.gradle

build.gradle

0 投票
3 回答
6965 浏览

android - 使用 RxJava 和 Retrofit 遍历列表并根据子查询增加结果

我正在使用改造,我觉得 rxjava(带有 retrolambda)将非常适合以下流程:

  1. 获取小部件列表 (http)
  2. 对于每个小部件

    a) 获取给定小部件类型的文章列表 (http)
    b) 将所有这些保存到数据库
    c) 获取列表中的第一篇(最新)文章并使用本文中的适当值更新 widget.articleName 和 widget.articleUrl

  3. 转换回列表并完成

但是我不确定在步骤 2a 之后该怎么做。到目前为止,这是我的代码

我玩过一些操作符,但是在链接时,我似乎总是把范围缩小得太远(例如,获得一篇文章的句柄),然后不再能够访问原始小部件来进行修改。

0 投票
1 回答
1979 浏览

android - Maven:在使用 retrolambda-maven-plugin 和 DEX-ed 与 android-maven-plugin 检测的应用程序中使用 Java 8 库

我编写了一小部分供我内部使用的小型库。这是使用 Maven 构建的。这些库针对“常规”Java、GWT 和 Android。其中一些是用 Java 8 编写的,因为我无意在 GWT 或 Android 上运行它们,因此其他库是用旧的 Java 6 编写的以支持这两个。我有一个将我的库完全迁移到 Java 8(就语言特性而言)的计划,并且我成功地在尚未发布的 GWT 2.8.0 上运行了 Java 8 重写的库。但是,我不能让 Java 8 重写的库为 Android 应用程序编译。问题是 Retrolambda(retrolambda-maven-plugin插件)似乎只能处理当前的 Maven 模块类,并完全忽略依赖类。因此,android-maven-plugin目标应用程序构建的中断:

配置retrolambda-maven-plugin如下:

是否可以配置 Retrolambda 插件来处理库类以及所有依赖项?或者也许我可以使用另一个字节码处理工具?


更新#1

我认为我对 Retrolambda 失败的看法是错误的。再深入研究一下,我发现这android-maven-plugin可能是罪魁祸首,因为它直接从 Maven 存储库中选择未检测的 JAR 文件,而不是从target目录中。启用详细日志记录发现了由以下命令调用的伪代码命令android-maven-plugin

我的想法是执行maven-dependency-plugin插件以将这三个工件获取到$BUILD_DIRECTORY/classes目录中,以使retrolambda-maven-plugin仪器具有依赖关系。比方说:

步骤 1:将依赖项复制到目标目录

第 2 步:使用 Retrolambda 检测复制的依赖项

调用retrolambda-maven-plugin

第 3 步:编译 DEX 文件

调用android-maven-plugin排除复制到目标目录的依赖项,因为它们都应该位于目标目录中

但这也失败了,因为我找不到一种方法来排除工件与android-maven-plugin.

如何禁止从以非检测状态存储它们的存储库中获取工件?

我的插件配置:

  • org.apache.maven.plugins:maven-dependency-plugin:2.10
  • net.orfjackal.retrolambda:retrolambda-maven-plugin:2.0.2
  • com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.9.0-rc.3

更新#2

Simpligility 团队发布了 Android Maven 插件 4.4.1,具有以下描述的场景。在插件更改日志中查看更多信息。

示例场景可以在http://simpligility.github.io/android-maven-plugin/instrumentation.html找到

0 投票
2 回答
1311 浏览

android - 在詹金斯上使用 Retrolambda 的 gradle 构建失败

jenkins 上的 android 构建失败,而在本地成功运行,下面是构建输出:

0 投票
1 回答
825 浏览

java - Travis CI 上的 Retrolambda

我的 travis.yml 文件:

app:compileRetrolambdaDebug它在错误消息期间失败Process 'command '/usr/lib/jvm/java-8-oracle/bin/java'' finished with non-zero exit value 1

是否可以在 Travis CI 上运行 Retrolambda?

添加 --debug 参数后,我得到以下信息:

这里也报了类似的错误,可能是 Gradle-retrolambda 插件问题。

0 投票
1 回答
460 浏览

java - 没有得到 BehaviourSubject

我已经做了很多 android,但对 java 8 来说是新手。我做了一个 BehaviourSubject< Map< String,String>>。

我在上面放了一个可观察的。在演示者类中,我将 BehaviourSbuject 设置为可观察的,并且一旦进行 onClick,onNext 就会调用它。但它正在抛出 rx.exceptions.OnErrorNotImplementedException。

我不明白为什么它会抛出这个错误,因为我已经参考了这个http://reactivex.io/RxJava/javadoc/index.html?rx/exceptions/OnErrorNotImplementedException.html但据此我只在 onNext 调用可观察到仍然出现此错误。

MainScreenView 是一个由 MainScreenFragment 实现的接口。

演示者类

MainScreenFragment 类

错误

提前致谢

0 投票
1 回答
177 浏览

maven - Retrolambda on Google App Engine

Is anyone using Retrolambda for a Google App Engine project? What does your pom.xml look like?

It's straightforward to compile for JDK8 and set up retrolambda's maven plugin. However, to deploy to GAE, Google's appengine-maven-plugin needs to be run under JDK7 otherwise it will compile JSP files into a format that breaks in production.

How can I use JDK8+retrolambda for compilation, but JDK7 for appengine:update?