dvi*_*vir 7 java scala sbt java-14
我有一个包含 Scala (2.13.1) 和 Java 文件的 sbt 项目。
\n我想使用 Java 14 编译 java 文件,包括预览功能。
\n我该怎么做?
按照上面的 oracle 文档,我尝试设置 javaOptions + javacOptions:
\njavaOptions ++= Seq("--enable-preview"), // when running\njavacOptions ++= Seq("--enable-preview", "--release", "14"), // when compiling\n
Run Code Online (Sandbox Code Playgroud)\n但是当我编译一个使用预览功能的简单 Java 文件时,例如:
\npackage example;\n\npublic record Person(String name, Integer age) {}\n
Run Code Online (Sandbox Code Playgroud)\n我得到:
\n\n\n[错误] /Users/dvir/learn/playground/src/main/java/example/Person.java:3:15: 类型声明的非法开始
\n
\n[错误] 公共记录 Person(字符串名称, 整数年龄) {}
\n[错误] ^
注意:\n我在 Mac 上使用AdoptOpenJDK 14。
\n我的JAVA_HOME
是/Library/Java/JavaVirtualMachines/adoptopenjdk-14.jdk/Contents/Home
.
\n使用时jshell
我可以毫无问题地使用预览功能:
dvir@Mac ~/learn/playground$ jshell --enable-preview\n
Run Code Online (Sandbox Code Playgroud)\n| Welcome to JShell -- Version 14.0.2\n| For an introduction type: /help intro\n\njshell> public record Person(String name, Integer age) {}\n| created record Person\n\njshell> var alice = new Person("alice", 20)\nalice ==> Person[name=alice, age=20]\n\njshell>\n
Run Code Online (Sandbox Code Playgroud)\n当我注释掉 Person record
(因此仅使用 java 14 中的标准功能,例如 switch 表达式)但保留javaOptions
and 时javacOptions
,我仍然收到此警告:
\n\n[警告] 从类文件读取 API 时出错:example.MainJava:java.lang.UnsupportedClassVersionError:未启用 example/MainJava 的预览功能(类文件版本 58.65535)。尝试使用“--enable-preview”运行
\n
当我还注释掉javaOptions
和时javacOptions
,java代码将按预期编译并运行。
请注意,上面的编译器警告类似于本博客标题下的警告Forced To \xe2\x80\x93\xe2\x80\x93enable\xe2\x80\x93preview At Run Time
。
\n警告和博客都建议添加\xe2\x80\x93\xe2\x80\x93enable\xe2\x80\x93preview
,就像我所做的那样。
如何设置 sbt 以使用 java 14 预览功能?
\n 归档时间: |
|
查看次数: |
425 次 |
最近记录: |