Какая польза от опции C в jshell

Я прошел через введение в руководство по jshell и не смог найти описание/примеры параметра -C в jshell.

$jshell --help
 -C<flag>              Pass <flag> to the compiler.
                        Use one -C for each compiler flag or flag argument

person Rahul Sharma    schedule 14.10.2017    source источник


Ответы (2)


Вы можете использовать этот параметр, чтобы использовать javac аргументы командной строки например, рассмотрим этот фрагмент кода:

String str = (String)"Hello"

Запуск jshell в обычном режиме и использование того же результата приведет к следующему:

введите описание изображения здесь


В то же время вы можете включить ошибки компилятора при предупреждении (-Werror) и использовать ключ -Xlint cast во время компиляции, чтобы предупредить вас о явном приведении, используемом в приведенном выше коде, используя -

jshell -C-Xlint:cast -C-Werror

и тот же оператор приведет к предупреждениям и ошибкам от компилятора Jshell, как: -

введите описание изображения здесь


Хотя IMO, это, безусловно, документировано гораздо меньше с точки зрения того, какие все флаги должны / не должны использоваться при использовании параметра командной строки JShell -C.

person Naman    schedule 14.10.2017
comment
Понятно! Спасибо за такое подробное описание. - person Rahul Sharma; 14.10.2017

Чтобы передать параметры компилятору javac, который jshell будет запускать для компиляции операторов в вашем REPL. Один простой пример (чтобы увидеть, какие классы загружены), jshell -C-verbose. См. также Стандартные параметры для javac и Дополнительные параметры для javac для дополнительных параметров, которые вы можете указать.

person Elliott Frisch    schedule 14.10.2017
comment
Не очень уверен во всех вариантах javac. Например, я попробовал jshell -C-version, и это привело к java.lang.IllegalArgumentException: invalid flag: -version - person Naman; 14.10.2017
comment
@nullpointer Верно, конечно -version печатает версию и завершает работу; так что поддерживать его не имеет особого смысла. Я просто пытался ответить на вопрос о цели опции -C. - person Elliott Frisch; 14.10.2017
comment
Да, даже я подумал, что стоит упомянуть то же самое. И нет четкой документации о том, что все флаги классифицируют себя для использования в Jshell. - person Naman; 14.10.2017
comment
Поскольку эти аргументы передаются компилятору, который используется для компиляции фрагментов, неподходящие параметры могут привести к сбою JShell. - person Robert Field; 21.10.2017
comment
@RobertField Я предполагаю, что это тот же самый случай с in-jshell?noredirect=1&lq=1">флаги J и R тоже? - person Naman; 22.10.2017