如何在JShell中设置Java版本?
我正在用泛型来试验一些行为 我想将解释的java版本设置为版本8。这将允许我具有与中定义的相同的类型推断行为如何在JShell中设置Java版本?,java,jshell,Java,Jshell,我正在用泛型来试验一些行为 我想将解释的java版本设置为版本8。这将允许我具有与中定义的相同的类型推断行为 我该怎么做?这是不可能的,JShell工具使用Java平台模块系统(JPMS),这是Java 9的一项功能。您要应用的标志是: "-source 8" 将其传递到JShell后面的编译器的方法是: "jshell -C "-source 11" 。。。但它不起作用。我刚刚尝试过,Jshell无法解析它,出现了一个异常。不应该是这样,所以我研究了引发错误的Arguments类的代码。事
我该怎么做?这是不可能的,JShell工具使用Java平台模块系统(JPMS),这是Java 9的一项功能。您要应用的标志是:
"-source 8"
将其传递到JShell后面的编译器的方法是:
"jshell -C "-source 11"
。。。但它不起作用。我刚刚尝试过,Jshell无法解析它,出现了一个异常。不应该是这样,所以我研究了引发错误的Arguments类的代码。事实证明,javac
选项被分为不同的类别,通过JShell只允许BASIC
命令(com.sun.tools.javac.main.Option.java:1308)
设置源标志不属于此组,因此验证程序会将其抛出,并且不会应用该设置
如果您想验证这一点,可以尝试将一个基本类型的param传递给javac,如“-p”,您将看到它被正确传递。您能否详细说明为什么JPMS是将JShell中发布的表达式解释为Java 8源代码的障碍?我真的怀疑JShell是否适用于这种情况。