IntelliJ目标字节码还原

20

我目前在处理一个项目,但是IntelliJ给了我编译错误Error:java: javacTask: source release 8 requires target release 1.8。我进入“设置>构建、执行、部署>编译器>Java”,发现其中一个模块的目标字节码版本设置为1.5,于是我将其更改为1.8,进行编译,然后它就成功了。但是第二天,我又遇到了同样的错误。我再次进入设置,发现该模块的目标字节码回到了1.5。我将其更改为1.8,这次也能够成功地编译和运行。这种情况已经发生多次,我对不得不手动更改目标字节码版本的次数感到沮丧。

为什么目标字节码版本会不断地恢复?我没有在pom或其他任何地方指定1.5,所以我很困惑为什么字节码版本会被设置为1.5。


1
我感到非常困惑。 - Perry Tew
6个回答

13

您需要在pom.xml文件中指定源版本和目标版本,但由于maven-compiler-plugin已默认添加,更简单的方法是设置以下属性:

您需要在pom.xml文件中指定源版本和目标版本,但由于maven-compiler-plugin已默认添加,更简单的方法是设置以下属性:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

11

您需要将此添加到您的POM中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

4

FYI.

尽管根据@isapir和@carlos-a-ibarra的回答,我在pom.xml中设置了上述两个选项,但我仍然遇到了这个问题。

我发现这是由于IntelliJ的一个设置造成的:

screen shot of intellij Maven settings

此配置可以在“构建、执行、部署”>“构建工具”>“Maven”>“导入”中找到。

默认情况下,它设置为“内部JRE”设置,在最新版本的Idea中为11。我必须选择它,并使用项目配置为1.8 JDK。

这很烦人,因为如果你有一些11和8项目的混合体,你将不得不手动来回切换这个设置。

每次重新导入pom.xml时,它会导致模块输出始终回退到11。

intellij idea project module settings

这是IntelliJ的一个非常烦人的错误。


1
这对我来说是真正的问题,也是相关的解决方法。 - coretechie

0

我也遇到了与“IntelliJ IDEA 2022.2.3(社区版)”相同的问题。

这是我的“pom.xml”文件。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>java-test-17</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.release>17</maven.compiler.release>
    </properties>

</project>

我可以手动更改“目标字节码版本”为17。(首选项 => 构建、执行、部署)=> 编译器 => Java编译器)。

但是,如果我重新加载Maven项目(右键单击“pom.xml”=> Maven => 重新加载项目),“目标字节码版本”将被更改回1.5。

Reload maven project

Target bytecode version

为了防止这种情况,我在pom.xml中添加了“maven-compiler-plugin”。然后重新加载了maven项目(右键单击“pom.xml”=> Maven => Reload project)。现在,“目标字节码版本”是17。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>java-test-17</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.release>17</maven.compiler.release>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
            </plugin>
        </plugins>
    </build>

</project>

0
请尝试以下选项,这对我有效。
步骤01:在模块和项目下更改版本。 步骤02:构建该模块。
希望能解决问题。

enter image description here

enter image description here


0
尝试在“首选项 => 构建、执行、部署 => 编译器 => Java编译器”下添加所有遗漏的模块,在“每个模块的字节码版本”中使用“+”按钮。由于某种未知原因,我遗漏了两个模块。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接