Re: changing the classpath at runtime in code
Aryeh M. Friedman wrote:
On Oct 24, 8:16 pm, Arne VajhHj <a...@vajhoej.dk> wrote:
Aryeh M. Friedman wrote:
Is it possible for a java app to change it's classpath at runtime. I
tried:
System.setProperty("java.class.path","foo")
The reason for wanting to try is URLClassLoader will not physically
reread a class file if it is in the classpath.
Create a URLClassLoader with a url that are *not* in the parent
classloaders url's.
so just do:
URL[] url={new URL("file://foo")};
URLClassLoader laoder=new URLClassLoader(url);
?
I have a little demo example I often use to illustrate
(subdir test is not in classpath of program).
Arne
===============================
import java.io.*;
import java.net.*;
public class DoubleDynmaic {
private static void dynno(int n) {
(new File("test")).mkdir();
try {
OutputStream os = new FileOutputStream("test/Test.java");
PrintStream ps = new PrintStream(os);
ps.println("public class Test {");
ps.println(" public Test() {");
ps.println(" System.out.println(" + n + ");");
ps.println(" }");
ps.println("}");
ps.close();
os.close();
Runtime.getRuntime().exec("javac -d test
test/Test.java").waitFor();
URL[] url = new URL[1];
url[0] = new URL("file:test/");
URLClassLoader cl = new URLClassLoader(url);
Class.forName("Test", true, cl).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
for(int i = 0; i < 10; i++) {
dynno(i);
}
}
}