8

只是探索 Java 的新版本,它的新模块系统,以及使用 jshell。可能我的问题没有太多意义,但我只是好奇。

所以我想出了一个问题:有没有办法在 jshell 中创建一个模块?或者模块只能在module-info.java?

4

1 回答 1

7

目前无法使用 JShell 创建模块,这也不是JShell的目标。

JShell 功能

JShell API 将提供 JShell 的所有评估功能。输入到 API 的代码片段称为 "snippets". jshell 工具还将使用 JShell 补全 API 来确定输入何时不完整(并且必须提示用户输入更多信息),如果添加了分号(在这种情况下,工具将附加分号)何时会完成,以及使用选项卡请求完成时如何完成输入。

片段必须对应于以下 JLS 语法产生式之一:

  • 表达
  • 陈述
  • 类声明
  • 接口声明
  • 方法声明
  • 字段声明
  • 进口申报

Asnippet不能声明包或模块。所有 JShell 代码都放在一个未命名模块的单个包中。包的名称由 JShell 控制。

事实上,尝试ModuleDeclaration在 JShell 中使用 a 并不是一种公认​​的语法,无论是直接评估还是使用/edit

在此处输入图像描述


然而,可以使用以下选项来有效地利用 JShell 中的现有模块以及代码段评估 -

--module-path <path>  
      Specify where to find application modules

--add-modules <module>(,<module>)*
      Specify modules to resolve, or all modules on the
      module path if <module> is ALL-MODULE-PATHs
于 2017-10-02T20:14:08.790 回答