java - 如何设置 sbt 以使用 java 14 预览功能
问题描述
我有一个包含 Scala (2.13.1) 和 Java 文件的 sbt 项目。
我想使用 Java 14 编译 Java 文件,包括预览功能。
我怎样才能做到这一点?
按照上面的 oracle 文档,我尝试设置 javaOptions + javacOptions:
javaOptions ++= Seq("--enable-preview"), // when running
javacOptions ++= Seq("--enable-preview", "--release", "14"), // when compiling
但是当我编译一个使用预览功能的简单 Java 文件时,例如:
package example;
public record Person(String name, Integer age) {}
我得到:
[错误] /Users/dvir/learn/playground/src/main/java/example/Person.java:3:15: 类型声明非法开始
[错误] 公共记录人(字符串名称,整数年龄){}
[错误] ^
注意:我在 Mac 上使用AdoptOpenJDK 14工作。
我JAVA_HOME
的是/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home
。
使用时,jshell
我可以毫无问题地使用预览功能:
dvir@Mac ~/learn/playground$ jshell --enable-preview
| Welcome to JShell -- Version 14.0.2
| For an introduction type: /help intro
jshell> public record Person(String name, Integer age) {}
| created record Person
jshell> var alice = new Person("alice", 20)
alice ==> Person[name=alice, age=20]
jshell>
当我注释掉 Person record
(因此仅使用 java 14 中的标准功能,例如 switch 表达式)但保留javaOptions
andjavacOptions
时,我仍然收到此警告:
[警告] 从类文件读取 API 时出错:example.MainJava:java.lang.UnsupportedClassVersionError:未启用预览功能,例如/MainJava(类文件版本 58.65535)。尝试使用“--enable-preview”运行
当我还注释掉javaOptions
andjavacOptions
时,java 代码按预期编译和运行。
请注意,上面的编译器警告类似于此博客标题下的警告Forced To ––enable–preview At Run Time
。
警告和博客都建议添加––enable–preview
,就像我一样。
如何设置 sbt 以使用 java 14 预览功能?
解决方案
推荐阅读
- postgresql - Sqlite转储输出表乱序
- ruby - 将十六进制字符串添加到二进制文件的内容中
- reactjs - 为什么没有注入门户内容?
- java - 如何在员工详细信息中添加“url”作为数据字段?
- c# - .Net Application SideBySide 加载失败 COMException (0x80040154)
- kubernetes - 如何在 Kubernetes 中注册和查找 Deployment 中的单个 pod 主机名?
- go - 尝试在 golang 中获取具有截止日期的锁?
- matlab - MATLAB 隔离并将变量分配给矩阵中的特定元素
- angular - OpenLayers 5,Angular 7 行未显示
- data-visualization - Tableau - 根据它们所属的月份计算维度中的项目