Как мне создать 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
}
Другие вопросы по тегам