сообщество!Было бы здорово, если бы вы могли помочь мне с моей проблемой.
Я получил специальный загрузчик классов, который будет java.system.class.loader
- он содержит URL-адреса, где найти классы.Например:
public class TestSystemClassLoader extends URLClassLoader {
public TestSystemClassLoader(ClassLoader parent) {
super(classpath(), parent);
}
private static URL[] classpath() {
try {
// I got junit-4.8.2.jar under this url.
URL url = new File("D:\\Work\\lib\\junit-4\\").toURI().toURL();
return new URL[] { url };
}
catch (MalformedURLException e) {
throw new IllegalArgumentException(e);
}
}
}
Затем я запускаю java (JDK6) с -Djava.system.class.loader = TestSystemClassLoader eg.TestMain, где eg.TestMain 'main:
public static void main(String[] args) throws Exception {
// here I got system CL which is what I want.
ClassLoader cl = Thread.currentThread().getContextClassLoader();
// here I got: "Exception in thread "main" java.lang.ClassNotFoundException: org.junit.runners.JUnit4"
Class<?> clazz = Class.forName("org.junit.runners.JUnit4", true, cl);
}
То, что меня бесит, так это то, что если я распакую / разархивирую / разархивирую junit-4.8.2.jar, то, например, будет работать TestMain!
Вопрос в том, как сказать java (JDK6), что я хочу, чтобы весь каталог находился в classpath, т.е. любой файл, находящийся в каталоге.
Заранее спасибо!