Интерфейс 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— если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, 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://docs.oracle.com/en/java/javase/25/docs/api/jdk.jshell/jdk/jshell/spi/ExecutionControl.html