Интерфейс ExecutionControl
- Все суперинтерфейсы:
AutoCloseable
- Все известные реализующие классы:
-
DirectExecutionControl,JdiDefaultExecutionControl,JdiExecutionControl,LocalExecutionControl,RemoteExecutionControl,StreamingExecutionControl
public interface ExecutionControl extends AutoCloseable
Аудитория этого интерфейса поставщика сервиса — инженеры, желающие реализовать собственную версию execution engine для поддержки API JShell.
Сниппет компилируется в код, заключенный в «оберточный класс». Execution engine используется основной реализацией JShell для загрузки и, в случае исполняемых Сниппетов, выполнения Сниппета.
Методы, определенные в этом интерфейсе, должны вызываться только основной реализацией JShell.
- С момента:
- 9
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static final class |
ExecutionControl.ClassBytecodes |
Объединяет имя класса с байт-кодами класса. |
static class |
ExecutionControl.ClassInstallException |
Класс установки (загрузки или переопределения) столкнулся с проблемой. |
static class |
ExecutionControl.EngineTerminationException |
Произошло непредвиденное завершение работы execution engine. |
static class |
ExecutionControl.ExecutionControlException |
Абстрактный базовый класс всех исключений ExecutionControl. |
static class |
ExecutionControl.InternalException |
Возникла внутренняя проблема. |
static class |
ExecutionControl.NotImplementedException |
Команда не реализована. |
static class |
ExecutionControl.ResolutionException |
Исключение, указывающее на то, что встречен DeclarationSnippet с неразрешенными ссылками. |
static class |
ExecutionControl.RunException |
Абстрактный базовый класс исключений, специфичных для выполнения пользовательского кода. |
static class |
ExecutionControl.StoppedException |
Исключение, указывающее, что вызов invoke(java.lang.String, java.lang.String) (или теоретически varValue(java.lang.String, java.lang.String)) был прерван вызовом stop(). |
static class |
ExecutionControl.UserException |
Произошло обычное пользовательское исключение. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addToClasspath |
Добавляет путь в путь класса выполнения. |
void |
close() |
Закрывает execution engine. |
Object |
extensionCommand |
Выполняет нестандартную команду (или стандартную команду из более новой версии). |
static ExecutionControl |
generate |
Ищет провайдера, затем создает и возвращает экземпляр ExecutionControl. |
static ExecutionControl |
generate |
Ищет провайдера, затем создает и возвращает экземпляр ExecutionControl. |
String |
invoke |
Выполняет исполняемый Сниппет, вызывая метод в указанном оберточном классе. |
void |
load |
Попытка загрузить новые классы. |
void |
redefine |
Попытка переопределить ранее загруженные классы. |
void |
stop() |
Прерывает запущенный вызов. |
String |
varValue |
Возвращает значение переменной. |
Подробности методов
load
void load(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
- Параметры:
-
cbcs- имя класса и байткоды для загрузки - Исключения:
-
ExecutionControl.ClassInstallException- возникла ошибка при загрузке классов, некоторые или все классы не были загружены -
ExecutionControl.NotImplementedException- если не реализовано -
ExecutionControl.EngineTerminationException- движок выполнения завершен
redefine
void redefine(ExecutionControl.ClassBytecodes[] cbcs) throws ExecutionControl.ClassInstallException, ExecutionControl.NotImplementedException, ExecutionControl.EngineTerminationException
- Параметры:
-
cbcs- имя класса и байткоды для переопределения - Исключения:
-
ExecutionControl.ClassInstallException- возникла ошибка при переопределении классов, некоторые или все классы не были переопределены -
ExecutionControl.NotImplementedException- если не реализовано -
ExecutionControl.EngineTerminationException- движок выполнения завершен
invoke
String invoke(String className, String methodName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
- Параметры:
-
className- класс, метод которого должен быть вызван -
methodName- имя вызываемого метода - Возвращаемое значение:
- результат выполнения или null, если результат отсутствует
- Исключения:
-
ExecutionControl.UserException- вызов вызвал исключение пользователя -
ExecutionControl.ResolutionException- вызов пытался напрямую или косвенно вызвать неразрешенный фрагмент кода -
ExecutionControl.StoppedException- если вызов был отменён методомstop() -
ExecutionControl.EngineTerminationException- движок выполнения завершен -
ExecutionControl.InternalException- произошла внутренняя ошибка ExecutionControl.RunException
varValue
String varValue(String className, String varName) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
- Параметры:
-
className- имя оберточного класса переменной -
varName- имя переменной - Возвращаемое значение:
- значение переменной
- Исключения:
-
ExecutionControl.UserException- форматирование значения вызвало исключение пользователя -
ExecutionControl.ResolutionException- форматирование значения пыталось напрямую или косвенно вызвать неразрешенный фрагмент кода -
ExecutionControl.StoppedException- если форматирование значения было отменено методомstop() -
ExecutionControl.EngineTerminationException- движок выполнения завершен -
ExecutionControl.InternalException- произошла внутренняя ошибка ExecutionControl.RunException
addToClasspath
void addToClasspath(String path) throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
- Параметры:
-
path- путь для добавления - Исключения:
-
ExecutionControl.EngineTerminationException- движок выполнения завершен -
ExecutionControl.InternalException- произошла внутренняя ошибка
stop
void stop() throws ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
- Исключения:
-
ExecutionControl.EngineTerminationException- движок выполнения завершен -
ExecutionControl.InternalException- произошла внутренняя ошибка
extensionCommand
Object extensionCommand(String command, Object arg) throws ExecutionControl.RunException, ExecutionControl.EngineTerminationException, ExecutionControl.InternalException
- Параметры:
-
command- нестандартная команда -
arg- аргументы команды - Возвращаемое значение:
- результат выполнения команды
- Исключения:
-
ExecutionControl.UserException- команда вызвала исключение пользователя -
ExecutionControl.ResolutionException- команда пыталась напрямую или косвенно вызвать неразрешенный фрагмент кода -
ExecutionControl.StoppedException- если команда была отменена методомstop() -
ExecutionControl.EngineTerminationException- движок выполнения завершен -
ExecutionControl.NotImplementedException- если не реализовано -
ExecutionControl.InternalException- произошла внутренняя ошибка ExecutionControl.RunException
close
void close()
После вызова close, вызовы методов этого интерфейса не должны выполняться.
- Определено в:
-
closeв интерфейсеAutoCloseable
generate
static ExecutionControl generate(ExecutionEnv env, String name, Map<String,String> parameters) throws Throwable
ExecutionControl.- Параметры:
-
env- среда выполнения (предоставляется JShell) -
name- имя провайдера -
parameters- карта параметров. - Возвращаемое значение:
- движок выполнения
- Исключения:
-
Throwable- исключение, возникшее при попытке найти или создать движок выполнения. -
IllegalArgumentException- если ни один ExecutionControlProvider не имеет указанногоnameиparameters.
generate
static ExecutionControl generate(ExecutionEnv env, String spec) throws Throwable
ExecutionControl.- Параметры:
-
env- среда выполнения (предоставляется JShell) -
spec- спецификацияExecutionControl, описание которой приведено в документации пакета документация пакета. - Возвращаемое значение:
- движок выполнения
- Исключения:
-
Throwable- исключение, возникшее при попытке найти или создать движок выполнения. -
IllegalArgumentException- если ни один ExecutionControlProvider не имеет указанногоnameиparameters. -
IllegalArgumentException- еслиspecимеет неправильный формат
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/jdk.jshell/jdk/jshell/spi/ExecutionControl.html