Я не уверен, что полностью понимаю, в чем ваша проблема - может быть, некоторые дополнительные подробности о том, как выглядит иерархия классов, помогут разобраться в ситуации. Из того, что вы написали, я могу предположить два возможных сценария:
0,1. Классы, которые вы хотите использовать, не реализуют никакого интерфейса.
В этом случае, независимо от того, как вы называете свои интерфейсы, они не будут работать, так как загружаемые вами классы не реализуют их. Вы застряли с использованием отражения, если не можете загрузить этот jar как часть пути к загрузочному классу.
0,2. Классы, которые вы хотите реализовать, реализуют некоторый интерфейс, который вы пытаетесь воспроизвести.
В этом случае реализация вашего интерфейса должна соответствовать точному квалифицированному имени интерфейса, который реализуют классы. Обычно при загрузке классов из jar загрузчик классов сначала выбирает интерфейсы из загрузчика системных классов, таким образом загружая ваши интерфейсы, и все должно работать.
Если они используют какой-то сумасшедший внутренний загрузчик классов, они все равно могут попытаться загрузить свои собственные интерфейсы. Вы можете попытаться выяснить, так ли это, используя «-XX: + TraceClassLoading», хотя я не знаю, поймет ли эта опция 1.3 jre.
Теперь, если вы хотите больше экспериментировать, вы также можете попробовать другой подход. Напишите свой собственный загрузчик классов, который загружает как классы из этого jar, так и код, который вы хотите запустить. Таким образом, ваш код сможет напрямую ссылаться на классы в этом фляге, но для запуска вашего приложения «основным» методом должен быть тот, который инициализирует этот загрузчик классов, загружает «настоящий» основной класс с помощью отражения и выполняет его метод main () также с помощью отражения.