- すべてのスーパー・インタフェース:
AutoCloseable
- 既知のすべての実装クラス:
DirectExecutionControl
,JdiDefaultExecutionControl
,JdiExecutionControl
,LocalExecutionControl
,RemoteExecutionControl
,StreamingExecutionControl
public interface ExecutionControl extends AutoCloseable
このインタフェースは、プラガブルなJShell実行エンジンを実装するために提供する必要がある機能を指定します。
このサービス・プロバイダ・インタフェースのオーディエンスは、JShell APIをサポートする独自のバージョンの実行エンジンを実装したいエンジニアです。
スニペットは、ラッパー・クラスでラップされたコードにコンパイルされます。 実行エンジンは、コアJShell実装でスニペットをロードし、実行可能スニペットに対してスニペットを実行するために使用されます。
このインタフェースで定義されたメソッドは、コアJShell実装によってのみコールする必要があります。
- 導入されたバージョン:
- 9
-
ネストされたクラスのサマリー
修飾子と型インタフェース説明static final class
クラス名とクラス・バイト・コードをバンドルします。static class
クラス・インストール(ロードまたは再定義)で問題が発生しました。static class
禁止されていない実行エンジンの終了が発生しました。static class
すべてのExecutionControl
例外の抽象ベース。static class
内部問題が発生しました。static class
コマンドは実装されていません。static class
未解決の参照を含むDeclarationSnippet
が検出されたことを示す例外。static class
実行中のユーザー・コードに固有の例外の抽象ベース。static class
invoke(java.lang.String, java.lang.String)
(または理論的にはvarValue(java.lang.String, java.lang.String)
)がstop()
によって中断されたことを示す例外。static class
「通常の」ユーザー例外が発生しました。 -
メソッドのサマリー
修飾子と型メソッド説明void
addToClasspath
(String path) 実行クラス・パスにパスを追加します。void
close()
この実行エンジンを停止します。extensionCommand
(String command, Object arg) 非標準コマンド(新しいバージョンの標準コマンド)を実行します。static ExecutionControl
generate
(ExecutionEnv env, String spec) プロバイダを検索し、ExecutionControl
インスタンスを作成して返します。static ExecutionControl
プロバイダを検索し、ExecutionControl
インスタンスを作成して返します。指定されたラッパー・クラスのメソッドをコールして、実行可能スニペットを起動します。void
load
(ExecutionControl.ClassBytecodes[] cbcs) 新しいクラスをロードしようとします。void
以前にロードされたクラスの再定義を試みます。void
stop()
実行中の呼出しを中断します。変数の値を返します。
-
メソッドの詳細
-
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
、インタフェース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
が不正な形式の場合
-