首页 > 解决方案 > 带有 Java 14 的 IntelliJ 2020.1 中的“记录”预览功能在 Maven“安装”期间因编译器错误而失败,但以其他方式运行

问题描述

我正在尝试将JEP 359: Java 中的记录(预览)功能与IntelliJ 2020.1.1 RC 一起使用。

我定义了一个这样的类:

package work.basil.example;

import java.time.LocalTime;

public record LocalTimeRange(LocalTime start , LocalTime stop)
{
}

当我使用这个类在另一个类中运行 main 方法时LocalTimeRange,没问题。

当我做一个 Maven 时install,我得到这个错误:

错误:(6,8)java:记录是预览功能,默认情况下被禁用。

➥ 如何帮助 Maven 完成install操作?

我使用了Maven Quickstart Archetype 1.4 版。然后我编辑了 POM 以使用其各种依赖项的所有最新版本。


我有“项目结构”设置:

项目设置 > 项目 > 项目 SDK > 14

项目设置 > 项目 > 项目语言级别 > 14(预览) - 记录、模式、文本块

项目设置 > 模块 > 项目语言级别 > 14(预览) - 记录、模式、文本块

我有“首选项”设置:

构建、执行、部署 > 编译器 > Java 编译器 > 每模块字节码版本 > 目标字节码版本 > 14

运行这个Java:openjdk 14.0.1 2020-04-14 OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.1+7) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.1+7,混合模式,共享)

使用:

IntelliJ IDEA 2020.1.1(终极版)

构建 #IU-201.7223.58,建于 2020 年 4 月 26 日

订阅有效期至 2020 年 8 月 28 日

运行时版本:11.0.6+8-b765.40 x86_64

虚拟机:JetBrains sro macOS 10.14.6 的 OpenJDK 64 位服务器虚拟机

GC:ParNew、ConcurrentMarkSweep

内存:2200M

核心:6

非捆绑插件:com.github.leomillon.uuidgenerator

标签: javamavenintellij-ideajava-record

解决方案


这似乎是 IntelliJ 2020.1.1 RC build # 201 周围出现的新问题或错误。2020.1.1 最终版本中的行为相同。

请参阅票证 # IDEA-237538,IntelliJ Build #IU-201.6668.121 不再识别 Java 14 记录

解决方法:添加<configuration>元素

为了使您的 Maven clean&install成功完成,请将<configuration>元素添加到您的两个 POM 元素中,以标记--enable-preview.

改变这个:

            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.1</version>
            </plugin>

            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>3.0.0-M4</version>
            </plugin>

……对此:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <release>14</release>
                    <compilerArgs>
                        <arg>--enable-preview</arg>
                    </compilerArgs>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0-M4</version>
                <configuration>
                    <argLine>--enable-preview</argLine>
                </configuration>
            </plugin>

推荐阅读