JDK17 と ButterKnife 間の競合: クラス butterknife.compiler.ButterKnifeProcessor$RScanner

開発環境:

Android Studio キリン | 2022.3.1 パッチ 1

Gradle 插件:クラスパス 'com.android.tools.build:gradle:7.2.0'

Gradle バージョン:distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip

    Android Studio が最新バージョンにアップグレードされた後、一連のアップデート (JDK、Gradle など) が行われたため、プロジェクトのビルド プロセス中に頻繁にエラーが発生し、「ビルド成功」という文字が見えにくくなりました。実デバイスに接続する際のインストール プロセス中にエラーが報告されました。:

原因: スーパークラスのアクセス・チェックに失敗しました: クラス buttknife.compiler.ButterKnifeProcessor$RScanner (名前のないモジュール @0x274412b0 内) は、モジュール jdk.compiler がアクセスしないため、クラス com.sun.tools.javac.tree.TreeScanner (モジュール jdk.compiler 内) にアクセスできません。 com.sun.tools.javac.tree を名前のないモジュール @0x274412b0 にエクスポートします

    ネットで調べてみると、jdk17とButterKnifeの非互換性が原因のようで、解決策は以下の通りです。

方法 1: JDK バージョンを下げる

    Android Studio の設定 - ビルド、実行、デプロイ - ビルド ツール - Gradle で、jdk 11 または jdk 15 をダウンロードすることを選択できます。ダウンロードが成功したら、プロジェクトを再ビルドします。

Android Studio でダウンロードが失敗した場合は、公式 Web サイトに手動でアクセスしてダウンロードしてインストールし、インストール ディレクトリを指定できます。

Android Studio -> ファイル -> プロジェクト構造 -> SDK の場所 -> Gradle 設定 (青く強調表示されたテキスト) をクリック -> リストから 11.0 などのバージョン名を持つ jdk 11 を選択します

方法 2: プロジェクトの gradle.properties ファイルを編集する

org.gradle.jvmargs=-Xmx1920M \
--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \
--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED

    これは stackoverflow で検索して見つかった解決策であり、次のように説明されています。

Sun ライブラリの一部は、新しい Java コンパイラで表示できるようにする必要があります。詳細については、この回答を参照してください 以下を gradle.properties ファイルに追加したところ、問題が解決されました。(私たちは Butterknife と Realm を使用しており、以下の 3 つのパッケージを追加する必要がありました。(Butterknife だけの場合は「javac.code」がなくても済むかもしれません))

参考:Android Studio の ButterKnife でこのエラーを修正するにはどうすればよいですか? - スタックオーバーフロー

おすすめ

転載: blog.csdn.net/crazestone0614/article/details/133529529