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