Создать модуль в JShell в Java 9

Просто исследуйте новый выпуск Java, его новую систему модулей, а также поиграйте с jshell. Возможно, мой вопрос не имеет особого смысла, но мне просто любопытно.

Поэтому у меня возник вопрос: есть ли способ создать модуль в jshell? Или модуль может быть создан только в module-info.java?

1 ответ

Решение

Модули не могут быть созданы с использованием JShell в настоящее время, и это также не является целью JShell.

Функциональность JShell

JShell API обеспечит все функциональные возможности оценки JShell. Фрагменты кода, которые вводятся в API, называются "snippets", Инструмент jshell также будет использовать API завершения JShell, чтобы определить, когда ввод является неполным (и пользователю необходимо указать больше), когда он будет завершен, если будет добавлена ​​точка с запятой (в этом случае инструмент добавит точку с запятой), а также как завершить ввод, когда завершение запрашивается с помощью вкладки.

Фрагмент должен соответствовать одному из следующих производств синтаксиса JLS:

  • выражение
  • утверждение
  • ClassDeclaration
  • InterfaceDeclaration
  • MethodDeclaration
  • FieldDeclaration
  • ImportDeclaration

snippet не может объявлять пакет или модуль. Весь код JShell помещается в один пакет в неназванном модуле. Имя пакета контролируется JShell.

На самом деле пытается использовать ModuleDeclaration в JShell не является признанным синтаксисом, а также оценки непосредственно или с использованием /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
Другие вопросы по тегам