android studio jdk問題

二次蓝發表於2024-04-19

報錯

使用 Terminal 執行命令,報錯:

 FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'StringFog'.
> Could not resolve all files for configuration ':classpath'.
   > Could not resolve com.android.tools.build:gradle:8.0.0.
     Required by:
         project :
      > No matching variant of com.android.tools.build:gradle:8.0.0 was found. The consumer was configured to find a library for use during runtime, compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.0' but:
          - Variant 'apiElements' capability com.android.tools.build:gradle:8.0.0 declares a library, packaged as a jar, and its dependencies declared externally:
              - Incompatible because this component declares a component for use during compile-time, compatible with Java 11 and the consumer needed a component for use during runtime, compatible with Java 8
              - Other compatible attribute:
                  - Doesn't say anything about org.gradle.plugin.api-version (required '8.0')
          - Variant 'javadocElements' capability com.android.tools.build:gradle:8.0.0 declares a component for use during runtime, and its dependencies declared externally:        
              - Incompatible because this component declares documentation and the consumer needed a library
              - Other compatible attributes:
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them packaged as a jar)
                  - Doesn't say anything about org.gradle.plugin.api-version (required '8.0')
          - Variant 'runtimeElements' capability com.android.tools.build:gradle:8.0.0 declares a library for use during runtime, packaged as a jar, and its dependencies declared externally:
              - Incompatible because this component declares a component, compatible with Java 11 and the consumer needed a component, compatible with Java 8
              - Other compatible attribute:
                  - Doesn't say anything about org.gradle.plugin.api-version (required '8.0')
          - Variant 'sourcesElements' capability com.android.tools.build:gradle:8.0.0 declares a component for use during runtime, and its dependencies declared externally:        
              - Incompatible because this component declares documentation and the consumer needed a library
              - Other compatible attributes:
                  - Doesn't say anything about its target Java version (required compatibility with Java 8)
                  - Doesn't say anything about its elements (required them packaged as a jar)
                  - Doesn't say anything about org.gradle.plugin.api-version (required '8.0')
   > Could not resolve 
   --------------------略

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 857ms

重點為 Incompatible because this component declares a component, compatible with Java 11 and the consumer needed a component, compatible with Java 8

應該是 jdk 版本不對。

但是查資料,在 ide 修改 Gradle 的 jdk 為 11、17 都無效。

解決歷程

  1. 在 Terminal 使用命令 java -version 可以顯示 jdk 11。但是轉念一想我係統變數 JAVA_HOME 配的 1.8,蠻奇怪的,會不會有什麼衝突。
  2. 修改系統變數 JAVA_HOME 為 jdk 11 版本,以及 Path 變數裡的 bin 路徑。
  3. 測試正常
  4. 應用打包會提示 Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
  5. 這次使用 IDE 的設定,開啟設定搜尋 Terminal,在 Project Setting 裡設定終端的環境變數:Environment variables: JAVA_HOME=E:/Program Files/Android/Android Studio/jbr,這個是 ide 自帶的 17 jdk。
  6. 命令執行正常。

done.

相關文章