Интерфейс ExecutionControl
- Все суперинтерфейсы:
AutoCloseable
- Все известные реализующие классы:
-
DirectExecutionControl,JdiDefaultExecutionControl,JdiExecutionControl,LocalExecutionControl,RemoteExecutionControl,StreamingExecutionControl
public interface ExecutionControl extends AutoCloseable
Аудитория для этого интерфейса поставщика сервиса — инженеры, желающие реализовать собственную версию движка выполнения в поддержку API JShell.
Сниппет компилируется в код, заключенный в 'оберточный класс'. Движок выполнения используется основной реализацией JShell для загрузки и, для исполняемых сниппетов, выполнения сниппета.
Методы, определенные в этом интерфейсе, должны вызываться только основной реализацией JShell.
- С:
- 9
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static final class |
ExecutionControl.ClassBytecodes |
Объединяет имя класса с байткодами класса. |
static class |
ExecutionControl.ClassInstallException |
Произошла ошибка при установке (загрузке или переопределении) класса. |
static class |
ExecutionControl.EngineTerminationException |
Произошло непредвиденное завершение работы движка выполнения. |
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() |
Завершает работу этого движка выполнения. |
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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/jdk.jshell/jdk/jshell/spi/ExecutionControl.html