Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JShell中设置Java版本?_Java_Jshell - Fatal编程技术网

如何在JShell中设置Java版本?

如何在JShell中设置Java版本?,java,jshell,Java,Jshell,我正在用泛型来试验一些行为 我想将解释的java版本设置为版本8。这将允许我具有与中定义的相同的类型推断行为 我该怎么做?这是不可能的,JShell工具使用Java平台模块系统(JPMS),这是Java 9的一项功能。您要应用的标志是: "-source 8" 将其传递到JShell后面的编译器的方法是: "jshell -C "-source 11" 。。。但它不起作用。我刚刚尝试过,Jshell无法解析它,出现了一个异常。不应该是这样,所以我研究了引发错误的Arguments类的代码。事

我正在用泛型来试验一些行为

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


我该怎么做?

这是不可能的,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是否适用于这种情况。