Мы используем настроенный загрузчик классов для динамической загрузки внешних jar-файлов в наш сервис. Внешние файлы jar, такие как / tmp / external / example.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 , в то время как некоторые выдают ClassNotFoundException при вызове Class.forName(clazzname, true, newClassLoader)
, даже если классы находятся в одном пакете. Все классы существуют, когда я загружаю их в основном тесте так же, как и служба, и файлы JAR хорошо отформатированы.
В чем проблема?