IntelliJ:错误:java:错误:不支持发布版本 5

Rob*_*bb1 181 java intellij-idea

我正在使用IntelliJ IDEA Ultimate 2019.3.1。每当我尝试启动任何简单的 Java Maven 项目(甚至可能是一个简单的 Hello World)时,我都会收到以下错误:

Error:java: error: release version 5 not supported
Run Code Online (Sandbox Code Playgroud)

java --version通过终端运行我得到以下输出:

openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-post-Ubuntu-0ubuntu1.1)
OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Ubuntu-0ubuntu1.1, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

javac --version通过终端运行我得到以下输出:

javac 11.0.5
Run Code Online (Sandbox Code Playgroud)

要在Java编译器的设置(如建议在这里)我看到这一点:

Java 编译器设置

我尝试将“目标字节码版本”编辑为1.8,但出现以下错误:

Error:(1, 26) java: package javafx.application does not exist
Error:(2, 20) java: package javafx.stage does not exist
Error:(4, 27) java: cannot find symbol
  symbol: class Application
Error:(12, 23) java: cannot find symbol
  symbol:   class Stage
  location: class Main
Error:(7, 9) java: cannot find symbol
  symbol:   method launch(java.lang.String[])
  location: class Main
Error:(11, 5) java: method does not override or implement a method from a supertype
Run Code Online (Sandbox Code Playgroud)

将其更改为1.11版,我收到此错误:

Error:java: Source option 5 is no longer supported. Use 6 or later.
Run Code Online (Sandbox Code Playgroud)

你认为有什么问题?我该如何解决?

Kon*_*kov 352

请参阅 /sf/answers/903060161/

首先,设置language level/release versionspom.xml这样的:

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>
Run Code Online (Sandbox Code Playgroud)

否则,Maven 将默认值设置为 1.5。maven-compiler-plugin如果您还没有,您还需要包括:

<dependency>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

此外,尝试在以下每个位置更改 Java 版本:

文件 -> 项目结构 -> 项目 -> 项目 SDK -> 11.

文件 -> 项目结构 -> 项目 -> 项目语言级别 -> 11。

文件 -> 项目结构 -> 项目 -> 模块 -> -> 来源 -> 11

在项目- > ctrl+ alt+ s- >构建,执行,部署- >编译器- > Java编译器- >项目的字节码版本- > 11

在项目- > ctrl+ alt+ s- >构建,执行,部署- >编译器- > Java编译器- >模块- > 1.11。

  • 实际上,对于 java 9+ 来说,正确的方法是将 `maven-compiler-plugin` 定义为插件而不是依赖项。无需在 IntelliJ 中配置任何内容,只需以[正确的方式](/sf/answers/3611034171/)配置您的 pom,它将在 IntelliJ 中开箱即用! (7认同)
  • 我已经完成了所有操作,但每当运行应用程序时我仍然看到相同的错误 (4认同)
  • 在网上尝试了各种解决方案但没有成功后,这一行解决了问题:文件 -&gt; 项目结构 -&gt; 项目 -&gt; 模块 -&gt; -&gt; 源 -&gt; 11 (4认同)
  • 遇到了这个问题。我按照步骤进行。问题解决了。谢谢。 (2认同)

小智 55

我花了一段时间来汇总一个实际的解决方案,但这里是如何摆脱这个编译错误。

  1. 打开 IntelliJ 首选项。

  2. 搜索“编译器”(或类似“compi”的东西)。

  3. 向下滚动到 Maven -->java 编译器。在右侧面板中将是一个模块列表及其关联的 Java 编译版本“目标字节码版本”。

  4. 选择版本 >1.5。如果 jdk 不可用,您可能需要升级您的 jdk。

在此处输入图片说明

  • 首选项 &gt; 构建、执行、部署 &gt; 编译器 &gt; Java 编译器 &gt; 目标字节码版本。设置这个值修复了我的错误。 (3认同)
  • 工作了,谢谢。作为参考,我将“目标字节码版本”从 1.5 设置为 1.8。 (2认同)
  • 工作喜欢魅力 (2认同)

小智 18

默认情况下,您的“项目字节码版本未在 Maven 项目中设置。

它认为您当前的版本是 5。

解决方案1:

只需转到“项目设置>构建,执行...>编译器>java编译器”,然后将您的字节码版本更改为您当前的java版本。

解决方案2:

在 POM 文件中添加以下构建插件:

 <properties>
        <java.version>1.8</java.version>
        <maven.compiler.version>3.8.1</maven.compiler.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.compiler.version}</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
Run Code Online (Sandbox Code Playgroud)


gar*_*ong 9

您应该通过以下任一方法再进行一次更改:


1 通过IntelliJ GUI

正如“tataelm”所述:

项目结构 > 项目设置 > 模块 > 语言级别: > 然后更改为您首选的语言级别


2 直接编辑IntelliJ配置文件

通过编辑以下行直接打开<ProjectName>.iml文件(如果您使用 IntelliJ,它会在您的项目文件夹中自动创建):

从:<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">

到:<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">

因为你的方法也意味着编辑这个文件。:)


方法 1 实际上是要求 IntelliJ 帮助编辑 .iml 文件,而不是由您直接完成。


小智 8

我将以下代码添加到我的pom.xml文件中。它解决了我的问题。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
Run Code Online (Sandbox Code Playgroud)


Muh*_*Gül 6

在我的例子中,唯一可行的解​​决方案是将以下块添加到pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version> <configuration> <release>12</release>
        </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)


tat*_*elm 6

我做了上面的所有事情,但不得不在 IntelliJ 中再做一件事:

项目结构 > 模块

我不得不更改每个模块的“语言级别”


小智 5

如果您使用的是 IntelliJ,请转到设置 => 编译器并将版本更改为您当前的 Java 版本。


Krz*_*ski 5

在我的情况下,将这部分添加到pom.xml文件中就足够了:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
        </plugins>
    </build>
Run Code Online (Sandbox Code Playgroud)