【问题标题】:Error:java: invalid source release 11 with --enable-preview (preview language features are only supported for release 15)错误:java:带有 --enable-preview 的无效源版本 11(仅版本 15 支持预览语言功能)
【发布时间】:2021-06-12 12:30:35
【问题描述】:

在尝试构建项目时,我遇到了一个错误:

错误:java:使用 --enable-preview 的无效源版本 11(预览 语言功能仅支持 15 版)

我该如何解决这个错误?

// game template
class A_Main {
    private A_World world = null;

    public A_Main() {
        //start the game with the space shooter asteroid game
        A_Frame frame = new Asteroid_Frame();
        frame.displayOnScreen();

        world = new Asteroid_World();

        world.setGraphicSystem(frame.getGraphicSystem());
        world.setInputSystem(frame.getInputSystem());

        A_GameObject.setPhysicsSystem(world.getPhysicsSystem());
        A_GameObject.setWorld(world);
        A_TextObject.setWorld(world);

        world.init();
        world.run();
    }

    public static void main(String[] args) {
        new A_Main();
    }
}

【问题讨论】:

  • 这远远没有足够的信息 :-) 您的源代码与错误无关,为零。您从构建工具中收到错误,您已将源版本设置为编译器无法理解的内容。可能您使用的是不支持 Java 11 的旧编译器(旧 JDK)。您需要添加构建项目的方式。 IntelliJ、Eclipse、Maven、命令行编译还是什么?
  • 请说明您是如何编译代码的。该错误表明您在 Java 15 上将--release 11(或-source 11)与--enable-preview 结合使用,而在该Java 版本上您只能将--enable-preview--release 15 一起使用。

标签: java javac


【解决方案1】:

Java 有多个版本。 Java 5 发布于 2004 年左右,Java 7 发布于 2011 年,Java 8 发布于 2014 年,最近 Java 每年大约有两次新的重大更新。 Java 编译器可以编译早期版本,但它不能(通常)编译具有较新版本语法的东西(如较新 Java 中的记录)。该规则的一个例外是 --enable-preview 标志,它允许它编译在主要版本发布时正在接受审查但尚未最终确定的内容。

您的错误意味着 java 源版本和预览标志的组合没有意义。这个标志总是只对编译器知道的最新源版本有意义。所以对于 JDK 15,这意味着源代码级别 15。你设置了 11。

解决此问题的一种方法是删除构建工具(Eclipse、Intellij、Maven、Gradle 或其他)中源代码版本设置中的“预览标志”。据我所知,您只使用非常古老/经典的 Java,因此它应该可以通过几乎任何 >= Java 5 构建。由于您没有告诉我们您使用哪种工具来构建您的项目,我们无法帮助您没有更多信息的确切步骤。

您可以阅读more about the preview flag at Baeldung

【讨论】:

  • 该错误并不意味着它不支持源代码版本,它意味着它不支持该源代码版本的--enable-preview。根据错误判断,OP 正在使用 Java 15,因此 --enable-preview 仅支持 -source 15(或 --release 15)。
  • 完全正确,不知道我怎么错过了15 部分。我会编辑。
猜你喜欢
  • 2022-01-02
  • 2021-01-17
  • 2021-07-23
  • 2021-12-01
  • 2021-01-13
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2019-06-06
相关资源
最近更新 更多