- すべてのスーパー・インタフェース:
AutoCloseable
- 既知のすべての実装クラス:
DirectExecutionControl
,JdiDefaultExecutionControl
,JdiExecutionControl
,LocalExecutionControl
,RemoteExecutionControl
,StreamingExecutionControl
public interface ExecutionControl extends AutoCloseable
このインタフェースは、プラガブルJShell実行エンジンを実装するために提供する必要がある機能を指定します。
このサービス・プロバイダ・インタフェースの対象読者は、JShell APIをサポートする独自のバージョンの実行エンジンを実装したいエンジニアです。
スニペットは'ラッパー・クラス'にラップされたコードにコンパイルされます。 実行エンジンはコアJShell実装で使用され、読み込み可能なスニペットの場合はスニペットが実行されます。
このインタフェースで定義されたメソッドは、コアのJShell実装によってのみ呼び出されます。
- 導入されたバージョン:
- 9
-
ネストされたクラスのサマリー
修飾子と型インタフェース説明static class
クラスのバイトコードでクラス名をバンドルします。static class
クラスinstall (ロードまたは再定義)に問題が発生しました。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
'normal'ユーザー例外が発生しました。 -
メソッドのサマリー
修飾子と型メソッド説明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
redefine(ExecutionControl.ClassBytecodes[] cbcs)
以前にロードされたクラスを再定義しようとします。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
が不正な形式の場合
-