А в чем конкретно проблема?
Насколько я себе представляю задачу, сделать предстоит что-то наподобие такого:
1. продумать интерфейсы, которые должен будет реализовывать какой-то класс плагина, чтобы приложение могло с ним взаимодействовать. В простейшем случае интерфейс может состоять из какого-нибудь метода типа init, инициализирующего плагин, которому в качестве параметра будут передаваться некоторые объекты твоего приложения, необходимые плагину, чтобы с приложением взаимодействовать
2. для собственно удобства в каждый jar класть, например, xml-файлик, описывающий плагин: название, полное имя класса, реалзиующего нужный интерфейс из п.1, ну и всякие там дополнительные сведения по вкусу
3. при запуске приложения загрузить плагины: прошерстить соотв. папочку, перебрать все имеющиеся там jar'ы. У каждого jar'а из xml-файла (п.2) узнать, как зовется главный класс, создать объект этого класса и вызвать на нем нужные методы (п.1). Здесь нужно смотреть в сторону java.reflection. Возможно, для реализации этого этапа потребуется написание своего class loader'а, но это вроде не сильно сложно.
В общем, технические сложности, я думаю, возникнут лишь на третьем этапе, на первых двух нужно просто определиться, каким образом плагины будут взаимодействовать с приложением и приложение с плагинами, ну и, соответственно, что им для этого нужно знать друг о друге.