java动态编译执行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fhm6100411074/article/details/79790281
import java.io.BufferedInputStream;

import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;

/*
 * 动态编译执行代码
 */
public class Test {
	public static void main(String[] args) {
		//编译 HelloWorld.java <=> javac D:\code\HelloWorld.java
		JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
		// 代码的绝对路径
		int status = compiler.run(null, null, null, "D:\\code\\HelloWorld.java");
		System.out.println(status == 0 ? "编译成功" : "编译失败");

		//执行代码 HelloWorld.java  <=>  java -cp D:\code\   HelloWorld
		Runtime runtime = Runtime.getRuntime();
		try {
			Process process = runtime.exec("java -cp D:\\code\\   HelloWorld");
			BufferedInputStream bufferedInputStream = new BufferedInputStream(process.getInputStream());
			byte[] bytes = new byte[1024];

			while (bufferedInputStream.read(bytes) != -1) {
				System.out.println(new String(bytes, 0, bytes.length));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/fhm6100411074/article/details/79790281
今日推荐