Lendo Metodos de outro pacote como Plugin

:smiley: Estou desenvolvendo um projeto e gostaria que quando o mesmo estivesse pronto, fosse possivel acrescentar novos modulos colocando em um diretorio pre-definido o pacote com o modulo. E na proxima vez que o sistema fosse aberto ele pudesse executar o modulo que acabou de ser instalado(como se fosse um plugin). Alguem pode me ajudar com esse problema?

Obrigado! :smiley:

Dê uma investigada na API de reflection, e na arquitetura de plug-ins do Eclipse (só pra ter um pouco de inspiração ;))

Minha sugestão:
Supondo que esses “pacotes” dos plugins sejam arquivos jar e que no Manifest dele esteja indicada a classe principal e o nome do método

  • Manter uma lista de “plugins instalados” e comparar com o conteúdo do diretório em questão. Ao encontrar algo novo:
  • Utilizar a classe JarFile para abrir o arquivo e retornar o Manifest
  • Através das classes Manifest / Attributes obter o nome da classe principal
  • Criar um objeto que represente a classe através do Class.forName
  • Obter o método desejado (getDeclaredMethod) desta classe
  • Utilizar o invoke para executá-lo

Acho que vale a pena olhar também o Java Web Start. Ele não é exatamente para isso, mas talvez sirva.