警告:[options] 源值 7 已过时,将在未来版本中删除

Posted

技术标签:

【中文标题】警告:[options] 源值 7 已过时,将在未来版本中删除【英文标题】:warning: [options] source value 7 is obsolete and will be removed in a future release 【发布时间】:2021-02-23 16:46:44 【问题描述】:

我在运行 flutter run 时得到 ff 错误。

warning: [options] source value 7 is obsolete and will be removed in a future release
warning: [options] target value 7 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
error: warnings found and -Werror specified

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':connectivity:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* 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

这是我的颤振医生输出:

[√] Flutter (Channel stable, 1.20.4, on Microsoft Windows [Version 10.0.18362.1139], locale en-US)
    • Flutter version 1.20.4 at C:\src\flutter
    • Framework revision fba99f6cf9 (8 weeks ago), 2020-09-14 15:32:52 -0700
    • Engine revision d1bc06f032
    • Dart version 2.9.2


[√] android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at C:\Users\USER01\AppData\Local\Android\sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: C:\PROGRA~1\Java\jdk-13.0.2\bin\java
    • Java version Java(TM) SE Runtime Environment (build 13.0.2+8)
    • All Android licenses accepted.

我似乎无法在谷歌上找到任何东西。我该如何解决这个错误?

【问题讨论】:

【参考方案1】:

这是针对即将弃用的旧版 Java(在本例中为 7)的编译器的警告。

要解决此问题,您有两种选择:

    您可以将JAVA_HOME 设置为较旧版本的Java,然后运行您的Flutter 构建。您还需要在您构建的任何地方(命令行、IDE、CI/CD 等)提供此 JAVA_HOME 或者我更喜欢的方法是告诉 Gradle 使用较旧的 Java 工具链来编译 Java 源代码。

要执行选项 2,请将 android/build.gradleallprojects 部分更新为如下所示:


allprojects 
  repositories 
    google()
    mavenCentral()
  

  tasks.withType(JavaCompile).configureEach 
    javaCompiler = javaToolchains.compilerFor 
      languageVersion = JavaLanguageVersion.of(8)
    
  

这包括更新已弃用的 jcenter Maven 存储库。

2021 年 11 月编辑:对工具链的支持也已添加到 Kotlin Gradle 插件中。

https://blog.jetbrains.com/kotlin/2021/11/gradle-jvm-toolchain-support-in-the-kotlin-plugin/

【讨论】:

它拯救了我的一天:D 在我的情况下没有JavaLanguageVersion.of(),只有kotlin_version,你能告诉我如何解决这个问题吗? @SonXuanNguyen 这个答案可能会有所帮助:***.com/a/65543854/176496【参考方案2】:

尝试这样做 Android Studio -> File -> Invalid cache and restart

【讨论】:

【参考方案3】:

这不是修复,而是临时解决方法。将以下内容放入您的build.gradle 中的allprojects 部分:

tasks.withType(JavaCompile) 
    options.compilerArgs << '-Xlint:-options' 

如果您的 Android java 代码是未经修改的默认生成代码,则该错误与您的依赖项之一有关,您将必须通过 pubspec.yaml 并找到导致错误的库。

【讨论】:

我正在使用 Flutter 并收到上述错误消息。这为我修好了!谢谢!【参考方案4】:

我在 2021 年 9 月在 Mac 上使用 Flutter 2.6.0 和 VSCode 时遇到了这个问题,上面的项目级解决方案都不适合我。我尝试了一堆东西:

在 launch.json 中设置 java.home 在 settings.json 中设置 JAVA_HOME 以上所有 build.gradle 建议 使用 jenv 为项目目录在本地设置 java 安装 RedHat Java VSCode 扩展并在那里调整各种设置

没有任何特定项目对我有用。但是,使用 jenv 将我的 global java 版本设置为 jdk 11 确实解决了问题,尽管使用了大锤。

【讨论】:

以上是关于警告:[options] 源值 7 已过时,将在未来版本中删除的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 源值1.5已过时,将在未来所有版本中删除

使用IDEA运行项目时提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

Idea 中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

源值 1.5 已过时

Maven项目提示:源值1.5已经过时,将在未来发行版中删除

intellij idea配置