2016-06-23 2 views
7

Java 9 представляет REPL под названием JShell внутри дистрибутива JDK. Есть ли способ подключиться к JShell JDK, который запускает какое-то приложение и выполняет команды, ссылающиеся на это приложение. Например, выполнение некоторых методов формирует код приложения, проверяет объекты и т. Д.?Java 9 REPL для запуска приложения

+0

Возможно ли это сделать в других REPL? –

+2

Нет, это не цель JShell. Цель состоит в том, чтобы позволить вам эвакуировать Java-заявления быстрым манером. JShell предоставит окружающий контекст, чтобы помочь вам сэкономить время, вы не можете сказать ему, что он принимает приложение как ваш окружающий контекст. –

+1

@bigdestroyer есть ракета крушения, которая предоставляет некоторые из того, что я упомянул http://www.crashub.org/ –

ответ

4

JShell не является стандартной командой java, это еще одна команда. Когда вы открываете оболочку, она «идет» в Read Read Eval Print Loop. После ввода команды она считывается и анализируется оболочкой, вычисляется и результат печатается.

Вы можете определить переменные и добавить классы в путь к классам, но я не думаю, что можно запустить приложение или сервер оттуда, по крайней мере, на этом этапе, а не в том же JVM. Поскольку вы можете добавлять классы, вы можете их создать, но у вас нет возможности проверить их переменные. Однако вы можете увидеть переменные, которые вы создаете в своей области JShell (какие объекты вы создали, вы можете получить доступ и распечатать только свои общедоступные методы и переменные).

Кажется, что у JShell будет api, что открывает путь для других возможностей.

1

Нет, не легко с jshell.

, но позвольте мне перефразировать ваш вопрос так, что мы не используем jshell но независимо РЕПЛ Java инструмент:

Есть ли способ подключить некоторый РЕПЛ Java инструмент против запущенного приложения Java и выполнять команды, ссылающийся на этот ход приложение. Например, выполнение некоторых методов формирует код приложения, проверяет объекты и т. Д.?

https://github.com/lorenzoongithub/nudge4j

, то вы должны взглянуть на nudge4j это позволяет точно, что

единственный нюанс для Java 8.

0

Альтернативный вариант, что вы могли бы рассмотреть что-то вроде BeanShell (хотя BeanShell довольно старый и, вероятно, не рекомендуется). Вы можете запустить консоль BeanShell из своего приложения, которое позволит вам получить доступ к вашим объектам и вызвать методы на них. См. Пример JConsole для некоторых идей.

Смежные вопросы