Рабочее(развлекательное как всегда)
12-01-2005 17:24
к комментариям - к полной версии
- понравилось!
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.net.*;
import java.io.*;
import com.sun.tools.javac.Main;
public class test {
public static void main(String[] args) {
new test().run();
}
public String generateJavaClass0() {
StringBuffer sb = new StringBuffer();
sb.append("public class C1 {\n");
sb.append("public static void start() {\n");
sb.append("System.out.println(\"0\");\n");
sb.append("}\n}");
return sb.toString();
}
public String generateJavaClass1() {
StringBuffer sb = new StringBuffer();
sb.append("public class C1 {\n");
sb.append("public static void start() {\n");
sb.append("System.out.println(\"1\");\n");
sb.append("}\n}");
return sb.toString();
}
public void run() {
try {
// 0
URL[] urls = null;
File dir = new File(".");
URL u = dir.toURL();
urls = new URL[] {u};
ClassLoader cl = URLClassLoader.newInstance(urls, null);
saveFile("C1.java", generateJavaClass0());
Main.compile(new String[] { "C1.java" });
Class cls = cl.loadClass("C1");
cls.getMethod("start", null).invoke(null, null);
// 1
cl = null;
System.gc();
cl = URLClassLoader.newInstance(urls, null);
saveFile("C1.java", generateJavaClass1());
Main.compile(new String[] { "C1.java" });
cls = cl.loadClass("C1");
cls.getMethod("start", null).invoke(null, null);
} catch (Exception e) {
e.printStackTrace();
}
}
public void saveFile(String filename, String text) throws IOException {
BufferedWriter out = new BufferedWriter(new FileWriter(filename));
try {
out.write(text);
} finally {
out.flush();
out.close();
}
}
}
вверх^
к полной версии
понравилось!
в evernote