문자열에 저장된 코드 실행
질문:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!