Создать модуль в 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