Настройка classpath динамически - PullRequest
0 голосов
/ 12 января 2012

Мне нужно разработать клиент, который может поддерживать любую версию сервера.каждый раз, когда новый сервер подключается с помощью клиента, соответствующая информация о сервере сохраняется на клиенте, и для класса pat h должно быть задано текущее местоположение пути класса для конкретного сервера.В зависимости от версии сервера необходимо указать путь к классу.Я сталкиваюсь с установкой этого пути класса динамически.Я всегда получаю ClassNotFound Exception.Не могли бы вы подсказать, как мне этого добиться.

Ответы [ 2 ]

0 голосов
/ 12 января 2012

Я не знаю, что именно вы пытаетесь достичь, но при условии, что у вас есть все необходимые библиотеки на вашем клиентском компьютере, и вы просто пытаетесь изменить путь к классам во время выполнения на основе определенного параметра, полученного от сервера, тогда я бы пошел на ClassWorlds .

Я бы попытался определить набор классов классов с помощью файла конфигурации ClassWorlds, и основной класс клиента был бы реализован с использованием аргумента ClassWorld в методе main . Тогда параметр, полученный от сервера, будет именем любой из этих областей. Итак, сразу после прочтения параметра области вам просто нужно переключить загрузчик классов текущего потока на тот, который создан ClassWorlds для конкретной области.

0 голосов
/ 12 января 2012

Classpath не может быть установлен динамически во время выполнения. Здесь вы можете сделать две вещи: познакомиться с OSGi или написать собственный загрузчик классов. Для этого конкретного примера было бы проще написать собственный загрузчик классов. Что вы держите в специфическом для сервера пути к классам? Классы, ресурсы, что? Некоторые детали могут помочь.

...