带有 Java 14 的 IntelliJ 2020.1 中的“记录”预览功能在 Maven“安装”期间因编译器错误而失败,但以其他方式运行
Posted
技术标签:
【中文标题】带有 Java 14 的 IntelliJ 2020.1 中的“记录”预览功能在 Maven“安装”期间因编译器错误而失败,但以其他方式运行【英文标题】:"Records" preview feature in IntelliJ 2020.1 with Java 14 fails with compiler error during Maven `install`, but runs otherwise 【发布时间】:2020-08-11 18:10:40 【问题描述】:我正在尝试将 Java 中的 JEP 359: Records (Preview) 功能与 IntelliJ 2020.1.1 RC 一起使用。
我定义了一个这样的类:
package work.basil.example;
import java.time.LocalTime;
public record LocalTimeRange(LocalTime start , LocalTime stop)
当我使用这个 LocalTimeRange
类在另一个类中运行 main 方法时,没问题。
当我做一个 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 运行时环境 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
VM:JetBrains s.r.o 的 OpenJDK 64 位服务器 VM macOS 10.14.6
GC:ParNew、ConcurrentMarkSweep
内存:2200M
核心数:6
非捆绑插件:com.github.leomillon.uuidgenerator
【问题讨论】:
有没有办法让你"(use --enable-preview to enable records)"? @ElliottFrisch 那张票IDEA-237538 中的错误似乎确实是我的问题。我在该页面上添加了一条评论,记录了我的详细信息。感谢您提供该链接。 我暂时不打算升级。希望他们能解决问题。 @ElliottFrisch 奇怪的是,我的代码运行了。我可以实例化我的record
类,并调用它的方法。只有 Maven install
会抛出此错误。所以对于一个简单的小应用程序只是为了玩record
,bug 不会咬人。仅对于需要 Maven 的复杂应用程序 install
是一个问题。
@ElliottFrisch 如果您回答您的评论,我会接受。
【参考方案1】:
这似乎是 IntelliJ 2020.1.1 RC build # 201 周围出现的新问题或错误。在 2020.1.1 的最终版本中具有相同的行为。
见票号 IDEA-237538,IntelliJ Build #IU-201.6668.121 no longer recognizes Java 14 records
解决方法:添加 <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>
【讨论】:
基于编辑,与Compile and execute a JDK preview feature with Maven相关以上是关于带有 Java 14 的 IntelliJ 2020.1 中的“记录”预览功能在 Maven“安装”期间因编译器错误而失败,但以其他方式运行的主要内容,如果未能解决你的问题,请参考以下文章
支持Java 14!Java开发工具IntelliJ IDEA 2020.1稳定版发布
Java 1.8 和 IntelliJ IDEA 14 中的注解编译错误
如何使用IntelliJ IDEA 14创建基于Maven3的Java Web Project
使用IntelliJ IDEA 14和Maven创建java web项目