学习动态编译的使用
注:执行动态编译时如果一直报 类未找到的错,但实际上类存在的时候,可以把jdk目录里面lib目录下的tools.jar包复制一份到jre目录里面的lib目录下。
一、动态编译的应用场景
浏览器端编写java代码,上传服务器编译和运行
服务器动态加载某些类文件进行编译之类的
二、动态编译的两种做法
1. 通过Runtime调用javac,启动新的进程去执行
Runtime run=Runtime.getRuntime();
Process process = run.exec(“javac -cp f:/MyJava HelloWorld”);//-cp 指的是 classpath
2. 通过JavaCompiler动态编译
三、动态编译怎么用
事先在F盘下的MyJava目录中准备好了一个HelloWorld.java,代码如下:
public class HelloWorld{
public static void main(String [] args){
System.out.println("上午好~");
}
}
1. 动态编译java源文件
package com.xyj.dynamiccompiler;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import javax.tools.JavaCompiler;
import javax.tools.ToolProvider;
/**
* 动态编译源文件
*/
@SuppressWarnings("all")
public class Demo01