問題タブ [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 エラーでエラーが発生する

私はアンドロイドスタジオ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;

これは、Google Auto を含む多数のライブラリを指定するモジュールの gradle 依存関係です。

依存関係を調べたとき、欠落しているメソッドが存在する場所であるため、Googleの自動値が必要だと思いましたが、提供されたものを追加しても問題は解決しません。

プロジェクト gradle ファイルには retrolambda プラグインが含まれています

どの依存関係がコンパイルエラーを引き起こしているかを特定するのを手伝ってくれる人はいますか? 興味深いことに、gradle ファイルを空のプロジェクトにコピーすると、すべて正常に動作します。

0 投票する
2 に答える
6915 参照

lambda - Java8ラムダは、匿名クラスのように、囲んでいるインスタンスへの参照を維持しますか?

匿名クラスは、それを囲むインスタンスへの参照を維持し、これが Android でのコンテキスト リークにつながる可能性があることがわかっています。

retrolambdaはラムダを Java7 にバックポートするため、試してみる価値があります。

Java8ラムダにはこの問題はないようですが、それに関する公式情報は見つかりません。

どんな手掛かり?

0 投票する
3 に答える
6965 参照

android - RxJava と Retrofit を使用してリストを反復処理し、サブクエリに基づいて結果を拡張します

私はレトロフィットを使用していますが、rxjava (retrolambda を使用) が次のフローに適していると感じています。

  1. ウィジェットのリストを取得 (http)
  2. ウィジェットごとに

    a) 指定されたウィジェット タイプの記事 (http) のリストを取得する
    b) それらすべてを db に保存する
    c) リストの最初の (最新の) 記事を取得し、この記事の適切な値で widget.articleName と widget.articleUrl を更新します

  3. リストに戻して完成

ただし、ステップ 2a の後に何をすべきかわかりません。これまでの私のコードは次のとおりです

いくつかのオペレーターをいじってみましたが、連鎖するときは常に絞り込みすぎて (たとえば、1 つの記事のハンドルを取得するなど)、元のウィジェットにアクセスして変更を加えることができなくなります。

0 投票する
1 に答える
1979 参照

android - Maven: retrolambda-maven-plugin で計測され、android-maven-plugin で DEX 化されたアプリケーションで Java 8 ライブラリを使用する

私は、内部使用のためにミニライブラリの小さなセットを作成しました。これは Maven を使用して構築されたセットです。ライブラリは、「通常の」Java、GWT、および Android を対象としています。それらのいくつかは、GWT や Android で実行するつもりがなかったため、Java 8 で作成されています。したがって、他のライブラリは、これら 2 つをサポートするために古い 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の失敗については間違っていると思います。もう少し掘り下げてみると、インストルメント化されていない JAR ファイルがディレクトリandroid-maven-pluginからではなく、Maven リポジトリから直接選択されるため、それが原因であることがわかりました。target詳細ログを有効にすると、 によって呼び出されたこの疑似コード コマンドが検出されましたandroid-maven-plugin

私の考えは、maven-dependency-pluginプラグインを実行してこれら 3 つのアーティファクトを$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 Plugin 4.4.1 をリリースしました。詳細については、プラグインの変更ログを参照してください。

サンプル シナリオはhttp://simpligility.github.io/android-maven-plugin/instrumentation.htmlにあります。

0 投票する
2 に答える
1311 参照

android - ジェンキンスでRetrolambdaを使用してgradleビルドが失敗する

ローカルで正常に実行されている間にジェンキンスでアンドロイドビルドが失敗する場合、以下はビルド出力です:

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 - Google App Engine の Retrolambda

Google App Engine プロジェクトで Retrolambda を使用している人はいますか? pom.xml はどのように見えますか?

JDK8 用にコンパイルし、retrolambda の maven プラグインをセットアップするのは簡単です。ただし、GAE にデプロイするには、Google の appengine-maven-plugin を JDK7 で実行する必要があります。そうしないと、JSP ファイルが本番環境で壊れる形式にコンパイルされます。

コンパイルには JDK8+retrolambda を使用し、appengine:update には JDK7 を使用するにはどうすればよいですか?