>  기사  >  Java  >  문자열 변수에 저장된 Java 코드를 실행하는 방법은 무엇입니까?

문자열 변수에 저장된 Java 코드를 실행하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-24 19:27:29444검색

How to Execute Java Code Stored in a String Variable?

문자열에 저장된 코드 실행

질문:

Java 코드를 실행할 수 있습니까? String 변수 내에 저장되어 있습니까? 이러한 문자열을 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.