Как мне создать ClassLoader, который не будет искать родительский класс для загрузки классов
Я думаю, что понимаю, как работают иерархии загрузки классов. (JVM сначала изучает родительскую иерархию)
Поэтому я хотел бы создать ClassLoader или использовать существующую библиотеку, которая является совершенно отдельной областью и не рассматривает родительскую иерархию ClassLoading. На самом деле я ищу тот же эффект от запуска отдельной JVM, но буквально без этого.
Я уверен, что это возможно, но удивился, что было так трудно найти простой пример того, как это сделать.
1 ответ
Решение
Просто используйте URLClassLoader
и поставка null
как родитель.
File myDir = new File("/some/directory/");
ClassLoader loader = null;
try {
URL url = myDir.toURL();
URL[] urls = new URL[]{url};
loader = new URLClassLoader(urls, null);
}
catch (MalformedURLException e)
{
// oops
}