問題タブ [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.
android - android studio 1.0 の retrolambda エラーでエラーが発生する
私はアンドロイドスタジオ1.0で働いています
gradle ファイルに次のエラーが表示されます。
タスク ':app:compileRetroLambdaDebug' の実行に失敗しました
// すべてのサブプロジェクト/モジュールに共通の構成オプションを追加できるトップレベルのビルド ファイル。
gradleファイルで他に何を変更する必要がありますか。何か提案してください...
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 ファイルを空のプロジェクトにコピーすると、すべて正常に動作します。
lambda - Java8ラムダは、匿名クラスのように、囲んでいるインスタンスへの参照を維持しますか?
匿名クラスは、それを囲むインスタンスへの参照を維持し、これが Android でのコンテキスト リークにつながる可能性があることがわかっています。
retrolambdaはラムダを Java7 にバックポートするため、試してみる価値があります。
Java8ラムダにはこの問題はないようですが、それに関する公式情報は見つかりません。
どんな手掛かり?
android - RxJava と Retrofit を使用してリストを反復処理し、サブクエリに基づいて結果を拡張します
私はレトロフィットを使用していますが、rxjava (retrolambda を使用) が次のフローに適していると感じています。
- ウィジェットのリストを取得 (http)
ウィジェットごとに
a) 指定されたウィジェット タイプの記事 (http) のリストを取得する
b) それらすべてを db に保存する
c) リストの最初の (最新の) 記事を取得し、この記事の適切な値で widget.articleName と widget.articleUrl を更新します- リストに戻して完成
ただし、ステップ 2a の後に何をすべきかわかりません。これまでの私のコードは次のとおりです
いくつかのオペレーターをいじってみましたが、連鎖するときは常に絞り込みすぎて (たとえば、1 つの記事のハンドルを取得するなど)、元のウィジェットにアクセスして変更を加えることができなくなります。
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にあります。
android - ジェンキンスでRetrolambdaを使用してgradleビルドが失敗する
ローカルで正常に実行されている間にジェンキンスでアンドロイドビルドが失敗する場合、以下はビルド出力です:
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 プラグインの問題である可能性があります。
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 クラス
エラー
前もって感謝します
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 を使用するにはどうすればよいですか?