ホームページ > Java > &#&チュートリアル > 文字列変数に格納された Java コードを実行するにはどうすればよいですか?

文字列変数に格納された Java コードを実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-24 19:27:29
オリジナル
541 人が閲覧しました

How to Execute Java Code Stored in a String Variable?

文字列に格納されたコードの実行

質問:

次の Java コードを実行できますか?文字列変数内に格納されますか?このような文字列を Java ステートメントに変換して実行することは可能ですか?

回答:

コンパイラ API を使用する

前の提案で述べたように、コンパイラー API を使用すると、コードを動的にコンパイルして実行できます。これを利用する方法は次のとおりです:

<code class="java">// Create a Java source code string
String javaCode = "...";

// Create a Java compiler instance
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

// Create a source code file from the string
JavaFileObject javaFile = new StringJavaFileObject("MyCode", javaCode);

// Compile the source code
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
Iterable<? extends JavaFileObject> compilationUnits = Collections.singletonList(javaFile);
compiler.getTask(null, null, diagnostics, null, null, compilationUnits).call();

// Execute the compiled code
Class<?> clazz = Class.forName("MyCode");
Method method = clazz.getDeclaredMethod("myMethod");
method.invoke(null);</code>
ログイン後にコピー

Beanshell の使用

または、次のように Beanshell ライブラリを使用できます:

<code class="java">// Create a Beanshell interpreter and add the Java code to it
Interpreter interpreter = new Interpreter();
interpreter.eval(javaCode);

// Access the defined classes and methods in the interpreter
Class<?> myClass = interpreter.getClassLoader().loadClass("MyClass");
Method method = myClass.getDeclaredMethod("myMethod");
method.invoke(null);</code>
ログイン後にコピー

Beanshell は現在は積極的に開発されていませんが、運用環境では引き続き信頼できることに注意してください。

以上が文字列変数に格納された Java コードを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート