【问题标题】:How to set the Java version in JShell?如何在 JShell 中设置 Java 版本?
【发布时间】:2018-10-17 05:18:27
【问题描述】:

我正在使用JShell from JDK 11 来试验一些泛型行为。

我想将解释的 java 版本设置为版本 8。这将允许我拥有与 Java Language Specification 8 中定义的相同的类型推断行为。

我该怎么做?

【问题讨论】:

  • 我真的怀疑 jshell 是否适合这样的事情。

标签: java jshell


【解决方案1】:

您要应用的标志是:

"-source 8"

将其传递给 JShell 后面的编译器的方法是:

"jshell -C "-source 11"

...但是不行。我刚才试了一下,Jshell解析失败,出现异常。不应该是这样,所以我查看了引发错误的 Arguments 类的代码。事实证明,javac 选项分为不同的类别,只有 BASIC 命令可以通过 JShell (com.sun.tools.javac.main.Option.java:1308)。

设置源标志不属于该组,因此验证器将其抛出,该设置将不会被应用。

如果您想验证这一点,可以尝试将 BASIC 类型的参数传递给 javac,如“-p”,您会看到它正确传递。

【讨论】:

    【解决方案2】:

    这是不可能的,JShell 工具使用 Java 平台模块系统 (JPMS),它是 java 9 的特性。

    【讨论】:

    • 您能否详细说明为什么 JPMS 会阻碍将 JShell 中发布的表达式解释为 Java 8 源代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2012-07-28
    • 2020-04-12
    • 1970-01-01
    • 2016-08-19
    • 2016-03-01
    相关资源
    最近更新 更多