"Records" IntelliJ 2020.1 中的预览功能 Java 14 在 Maven `install` 期间因编译器错误而失败,但以其他方式运行
"Records" preview feature in IntelliJ 2020.1 with Java 14 fails with compiler error during Maven `install`, but runs otherwise
我正在尝试使用 JEP 359: Records (Preview) feature in Java with IntelliJ 2020.1.1 RC。
我这样定义了一个class:
package work.basil.example;
import java.time.LocalTime;
public record LocalTimeRange(LocalTime start , LocalTime stop)
{
}
当我 运行 在另一个 class 中使用此 LocalTimeRange
class 的主要方法时,没问题。
当我执行 Maven install
时出现此错误:
Error:(6,8) java: records are a preview feature and are disabled by default.
➥ 如何帮助 Maven 完成它的 install
操作?
我用的是Maven Quickstart Archetype,版本1.4。然后我编辑了 POM 以使用其各种依赖项的所有最新版本。
我有“项目结构”设置:
Project Settings > Project > Project SDK > 14
Project Settings > Project > Project language level > 14 (Preview) - Records, patterns, text blocks
Project Settings > Modules > Project language level > 14 (Preview) - Records, patterns, text blocks
我有“首选项”设置:
Build, Execution, Deployment > Compiler > Java Compiler > Per-module bytecode version > Target bytecode version > 14
运行 这个 Java:
openjdk 14.0.1 2020-04-14
OpenJDK 运行时环境 AdoptOpenJDK (build 14.0.1+7)
OpenJDK 64 位服务器 VM AdoptOpenJDK(构建 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 的 OpenJDK 64 位服务器 VM s.r.o
macOS 10.14.6
GC:ParNew,ConcurrentMarkSweep
内存:2200M
核心数:6
非捆绑插件:com.github.leomillon.uuidgenerator
这似乎是围绕 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>
我正在尝试使用 JEP 359: Records (Preview) feature in Java with IntelliJ 2020.1.1 RC。
我这样定义了一个class:
package work.basil.example;
import java.time.LocalTime;
public record LocalTimeRange(LocalTime start , LocalTime stop)
{
}
当我 运行 在另一个 class 中使用此 LocalTimeRange
class 的主要方法时,没问题。
当我执行 Maven install
时出现此错误:
Error:(6,8) java: records are a preview feature and are disabled by default.
➥ 如何帮助 Maven 完成它的 install
操作?
我用的是Maven Quickstart Archetype,版本1.4。然后我编辑了 POM 以使用其各种依赖项的所有最新版本。
我有“项目结构”设置:
Project Settings > Project > Project SDK > 14
Project Settings > Project > Project language level > 14 (Preview) - Records, patterns, text blocks
Project Settings > Modules > Project language level > 14 (Preview) - Records, patterns, text blocks
我有“首选项”设置:
Build, Execution, Deployment > Compiler > Java Compiler > Per-module bytecode version > Target bytecode version > 14
运行 这个 Java: openjdk 14.0.1 2020-04-14 OpenJDK 运行时环境 AdoptOpenJDK (build 14.0.1+7) OpenJDK 64 位服务器 VM AdoptOpenJDK(构建 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 的 OpenJDK 64 位服务器 VM s.r.o macOS 10.14.6
GC:ParNew,ConcurrentMarkSweep
内存:2200M
核心数:6
非捆绑插件:com.github.leomillon.uuidgenerator
这似乎是围绕 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>