前面的章节几乎都是在 JShell 内部如何定义代码,运行代码和搜索代码。其实,JShell 还提供了另一个傻 ( xx 词 ) 手锏,就是可以执行外部已经存在的代码。
JShell 可以通过类路径来访问外部类,而访问方式则有多种,比如模块路径,附加模块设置和模块导出设置。
设置类路径
在 JShell 中访问外部类,需要使用类路径。而这个类路径,就需要在启动的时候就进行设置。
JShell 提供了 --class-path
来设置类路径,例如,如果要把当前目录加入到类路径中,可以进行下面的 Shell
[yufei@www.twle.cn ~]$ jshell --class-path .
我们可以使用 --class-path
将类路径指向包含要访问的包的目录或 JAR 文件,但有两个要求
- 代码必须编译成类文件
.class
的。 - 必须有包名,JShell 无法访问默认包中的代码(也称为未命名的包)
设置了类路径后,我们就可以使用 import
命令将某个包或类导入到当前会话中
jshell> import my.cool.code.*
另外,类路径还可以在 JShell 中被修改,而修改方法就是使用 /env
命令
jshell> /env --class-path . | 正在设置新选项并还原状态。 jshell>
注意:设置过程可能有点耗时,请耐心等待。
/env
命令重置执行状态,使用新的类路径设置或使用该命令输入的其他环境设置重新加载任何当前片段。
设置模块 ( module ) 选项
JShell 同样是支持模块,而且,还支持设置模块路径,指定要解析的其他模块以及给定的模块导出
设置模块的方法,就是在启动 JShell 是添加 --module-path
和 --add-modules
选项。例如
[yufei@www.twle.cn ~]$ jshell --module-path myOwnModulePath --add-modules my.module
当 JShell 启动成功之后,就可以使用 /env
命令查看当前 JShell 的配置项
jshell> /env | --add-modules my.module | --module-path myOwnModulePath | --class-path myOwnClassPath
有关选项的详细信息,可以使用 /help
命令
jshell> /help context
目前尚无回复