社区!如果你能帮我解决我的问题,那就太好了。
我有一个自定义的类加载器,它将是java.system.class.loader的-它保存了查找类的urls。如下所示:
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);
}
}
}然后,我使用-Djava.system.class.loader=TestSystemClassLoader eg.TestMain运行java(JDK6),其中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 -那么eg.TestMain就可以工作了!
问题是-如何告诉java(JDK6)我希望整个目录都在类路径中,即该目录中的任何文件。
提前感谢!
发布于 2011-10-03 02:53:26
找到所有的jars并添加它们:
private static URL[] classpath() {
try {
File file = new File("D:\\Work\\lib\\junit-4\\");
List<URL> urls = new ArrayList<URL>();
for (File f : file.listFiles()) {
if (f.isFile() && f.getName().endsWith(".jar")) {
urls.add(f.toURI().toURL());
}
}
return urls.toArray(new URL[0]);
}
catch (MalformedURLException e) {
throw new IllegalArgumentException(e);
}
}https://stackoverflow.com/questions/7480844
复制相似问题