Как создать 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
}

licensed under cc by-sa 3.0 with attribution.