Использование Java urlclassloader. Это нужно только в некоторых редких случаях? - PullRequest
1 голос
/ 29 декабря 2010

В каком случае можно использовать URLClassLoader для загрузки класса из определенного jar-файла по указанному пути?
Например.

URL url = new URL("file:///path/to/customClasses.jar");
URLClassLoader pluginLoader = new URLClassLoader(new URL[] { url });
Class<?> cl = pluginLoader.loadClass("apackage.MyCustomClass");

Если я хотел использовать классы из customClasses.jar, я всегда думал, что достаточно поместить этот jar в путь, доступный из CLASSPATH.
Тогда в моем коде просто используйте apackage.MyCustomClass.
Я думаю, что здесь что-то не так поняли или упустили, так что, может, кто-нибудь объяснит и приведет пример, когда приведенный выше фрагмент загрузки класса такой способ полезен?
Спасибо!

1 Ответ

2 голосов
/ 29 декабря 2010

Я бы сказал, что в зависимости от типа программирования, которым вы занимаетесь, использование URLClassLoader должно быть очень редким явлением.

Обычно вы будете использовать загрузчик классов для загрузки классов во время выполнения, которое вы не могли ожидать заранее.

Хороший пример - если вы создаете инструмент, который может быть дополнен плагинами, и плагины загружаются во время выполнения. Например, Затмение.

Если у вас есть jar-файл, доступный во время компиляции, и вы находитесь в командной строке, добавьте нужный файл jar в оператор компиляции. Например,

javac -cp /path/to/lib/customClasses.jar MyClassThatReferencesCustomClasses

Если вы используете Eclipse, добавьте jar в свой проект, щелкните правой кнопкой мыши по нему и выберите add to build path.

С уважением,

Будет

...