package com.java.test.a; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.tools.JavaCompiler; import javax.tools.JavaFileObject; import javax.tools.StandardJavaFileManager; import javax.tools.ToolProvider; public class Compilejava { public static void main(String[] args) throws IOException { String filePath = "D://WorkFiles/src\\com\\java\\pojo\\";//java文件夾路徑 String classPath = "D://WorkFiles/src\\com\\java\\class";//class文件存放路徑 //把文件夾下所有java文件完整路徑存到files數組中,不用考慮引用關系//在ZGS.java中引用了LIST和INFO作為引用數據對象 String[] files = {filePath+"LIST.java",filePath+"ZGS.java",filePath+"INFO.java"}; JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager manager = compiler.getStandardFileManager(null,null,null); Iterable<? extends JavaFileObject> javaFileObjects = manager.getJavaFileObjectsFromStrings(Arrays.asList(files)); //options就是指定編譯輸入目錄,與我們命令行寫javac -d C://是一樣的 List<String> options = new ArrayList<String>(); options.add("-d"); options.add(classPath); JavaCompiler.CompilationTask task = compiler.getTask(null,manager,null,options,null,javaFileObjects); task.call(); manager.close(); } }