Походит на проблему иерархии загрузчика классов. Я не могу сказать, в какой среде развертывается ваше приложение, но иногда эта проблема может возникать в веб-среде - где сервер приложений создает иерархию загрузчиков классов, напоминающую что-то вроде:
javahome / lib - от имени root
appserver / lib - как дочерний элемент root
webapp / WEB-INF / lib - как дочерний элемент root
и т.д.
Обычно загрузчики классов делегируют загрузку своему родительскому загрузчику классов (это известно как "parent-first
"), и если этот загрузчик классов не может найти класс, тогда попытается дочерний загрузчик классов. Например, если класс, развернутый как JAR в webapp / WEB-INF / lib, пытается загрузить класс, сначала он запрашивает загрузчик класса, соответствующий appserver / lib, для загрузки класса (который, в свою очередь, запрашивает загрузчик классов, соответствующий javahome / lib загрузить класс), и если этот поиск не удался, то выполняется поиск соответствия этому классу в WEB-INF / lib.
В веб-среде вы можете столкнуться с проблемами в этой иерархии. Например, одна ошибка / проблема, с которой я сталкивался ранее, заключалась в том, что класс в WEB-INF / lib зависел от класса, развернутого в appserver / lib, который, в свою очередь, зависел от класса, развернутого в WEB-INF / lib. Это вызвало сбои, потому что, хотя загрузчики классов могут делегировать родительскому загрузчику классов, они не могут делегировать обратно по дереву. Таким образом, загрузчик классов WEB-INF / lib запросит класс appserver / lib для класса, applover / lib загрузчик классов загрузит этот класс и попытается загрузить зависимый класс, и потерпит неудачу, так как не может найти этот класс в appserver / lib или javahome /lib.
Итак, хотя вы, возможно, не развертываете свое приложение в среде веб-сервера / приложения, мое слишком длинное объяснение может быть применимо к вам, если в вашей среде настроена иерархия загрузчиков классов. Является ли? JPF делает что-то вроде магии загрузчика классов, чтобы иметь возможность реализовать функции плагина?