Java ClassLoader无法加载某些类

时间:2019-03-07 04:17:42

标签: java classloader

我们使用定制的类加载器将外部jar动态加载到我们的服务中。每天都会从网络上下载并覆盖诸如 /tmp/external/example.jar 之类的外部jar,只有成功下载了jar文件之后,才会这样创建一个新的类加载器:

    File tmp = new File("/tmp/external/example.jar");
    List<URL> classpathes = new ArrayList<URL>(Arrays.asList(((URLClassLoader)parent).getURLs()));
    classpathes.add(tmp.toURL());
    ClassLoader newClassLoader = new URLClassLoader(classpathes.toArray(new URL[0]), parent);

现在的问题是,某些类可以由 newClassLoader 加载,而有些类在调用Class.forName(clazzname, true, newClassLoader)时会抛出ClassNotFoundException,即使这些类位于同一包下。当我以与服务相同的方式在主测试中加载它们时,所有类都存在,并且jar文件格式正确。

出什么问题了?

0 个答案:

没有答案