/***
* 根据 java文件的路径,动态编译加载对应的类。
* @param javaPath
* @return Class
*/
public static Class dynComplieLoadClass(String filePath, String className) {
//第二个参数是编译生成class文件的目录。每二个参数是.java的完全路径。
String[] arguments = new String[] { "-d", System.getProperty("user.dir"),
filePath+ File.separator + className+ ".java" };
// Compile
int result = com.sun.tools.javac.Main.compile(arguments);
if (result == 0) { URL classpath = null; try { //设置classPath 为 生成class文件的目录 classpath = new URL("file:/" + System.getProperty("user.dir") + "/"); } catch (MalformedURLException e1) { e1.printStackTrace(); } //这句话是把生成class文件的目录加到classPath中。 URLClassLoader classLoader = new URLClassLoader(new URL[] { classpath }); // Load try { //若编译的文件有包名load时加上包名。 Class testClass = classLoader.loadClass("cn.test.co." + className); return testClass; } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { System.err.println("编译没通过!"); } return null; }