Tenho uma aplicação que ao iniciar verifica que ficheiros .jar existem no directorio “modulos” e guarda essa informação (até aqui tudo bem).
O objectivo é utilizar a classe Main.class existente em cada ficheiro .jar (começa aqui o problema), como posso definir a classpath dentro do proprio programa depois de ter verificado que ficheiros .jar existem?
Alguma dica de como criar este sistema de “plugins” ?
Você tem que fazer o casting pra sua classe… assim:
MainClass main = (MainClass) o;
Seria bom vc dar uma estudada na parte mais básica, porque sem saber isso vai ser difícil para você conseguir montar esse esquema de plugin que você quer…
Tchiii … tem razão! Foi mesmo desatenção minha (já eram quase 4h da manhã, mal conseguia manter os olhos abertos :shock: :oops: )
Hoje de manhã é que me lembrei que seria melhor ter uma classe abstracta com todos os métodos que os modulos têm que implementar e utilizo esta classe para fazer o casting.
Sabe, quando “desenhei” este sistema de módulos pensei que podia modificar a classpath de dentro do programa utilizando System.setProperty(“java.class.path”, “a_nova_classpath”); só depois me apercebi que depois de entrar no método main(String args[]) já a classpath foi definida e não adianta tentar modifica-la.
De qualquer forma já está tudo a funcionar, a sua ajuda foi preciosa, mais uma vez obrigado.
Vegetto, como o rapaz disse, ele quer trabalhar no esquema de plugins, então fazer o casting não é uma boa idéia, mesmo porque ele não sabe qual o tipo (nome) da classe que vai trabalhar, certo.
pek, o mais correto é usar reflection ou que suas classes de plugin implementem uma interface em comum, o que acho mais razoável.
danieldestro, foi isso mesmo que eu fiz. Criei uma class que contem a interface que todos os modulos têm que implementar, depois foi só fazer o casting usando esta classe.
Daniel, eu tinha pensando que aquela classe lá seria a classe mãe de todos os plugins, por isso sugeri o casting… mas usar reflection, como vc sugeriu, é uma boa também!