Интерфейс ExecutionControl
- Все суперинтерфейсы:
AutoCloseable
- Все известные реализующие классы:
-
DirectExecutionControl,JdiDefaultExecutionControl,JdiExecutionControl,LocalExecutionControl,RemoteExecutionControl,StreamingExecutionControl
public interface ExecutionControl extends AutoCloseable
Этот интерфейс определяет функциональность, которая должна быть предоставлена для реализации подключаемого движка выполнения JShell.
Аудитория для этого интерфейса поставщика услуг — инженеры, желающие реализовать собственную версию движка выполнения в поддержку API JShell.
Сниппет компилируется в код, заключенный в 'оберточный класс'. Движок выполнения используется ядром JShell для загрузки и, в случае исполняемых сниппетов, выполнения сниппета.
Методы, определенные в этом интерфейсе, должны вызываться только ядром JShell.
- С момента:
- 9
Вложенные классы
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class | ExecutionControl.ClassBytecodes | Объединяет имя класса с байткодами класса. |
static class | ExecutionControl.ClassInstallException | Установка класса (загрузка или переопределение) столкнулась с проблемой. |
static class | ExecutionControl.EngineTerminationException | Произошло непредвиденное завершение работы движка выполнения. |
static class | ExecutionControl.ExecutionControlException | Абстрактный базовый класс всех |
static class | ExecutionControl.InternalException | Произошла внутренняя проблема. |
static class | ExecutionControl.NotImplementedException | Команда не реализована. |
static class | ExecutionControl.ResolutionException | Исключение, указывающее на то, что встретился |
static class | ExecutionControl.RunException | Абстрактный базовый класс исключений, специфичных для выполнения пользовательского кода. |
static class | ExecutionControl.StoppedException | Исключение, указывающее, что |
static class | ExecutionControl.UserException | Произошло обычное пользовательское исключение. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | addToClasspath(String path) | Добавляет путь в путь класса выполнения. |
void | close() | Завершает работу этого движка выполнения. |
Object | extensionCommand(String command,
Object arg) | Выполняет нестандартную команду (или стандартную команду из более новой версии). |
static ExecutionControl | generate(ExecutionEnv env,
String spec) | Ищет поставщика, затем создаёт и возвращает экземпляр |
static ExecutionControl | generate(ExecutionEnv env,
String name,
Map<String,String> parameters) | Ищет поставщика, затем создаёт и возвращает экземпляр |
String | invoke(String className,
String methodName) | Вызывает исполняемый сниппет, вызвав метод в указанном оберточном классе. |
void | load(ExecutionControl.ClassBytecodes[] cbcs) | Попытка загрузить новые классы. |
void | redefine(ExecutionControl.ClassBytecodes[] cbcs) | Попытка переопределить ранее загруженные классы. |
void | stop() | Прерывает выполняемый вызов. |
String | varValue(String className,
String varName) | Возвращает значение переменной. |
Методы
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Вызывает исполняемый сниппет, вызвав метод в указанном оберточном классе. Метод не должен принимать аргументов и возвращать String.
- Параметры:
-
className- класс, метод которого должен быть вызван -
methodName- имя вызываемого метода - Возвращает:
- результат выполнения или null, если результат отсутствует
- Исключения:
-
ExecutionControl.UserException- вызов вызвал пользовательское исключение -
ExecutionControl.ResolutionException- вызов попытался напрямую или косвенно вызвать неразрешенный сниппет -
ExecutionControl.StoppedException- еслиinvoke()был отменен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, 2020, 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/11/docs/api/jdk.jshell/jdk/jshell/spi/ExecutionControl.html