Pegar caminho relativo - Plugin Eclipse

2 respostas
abstract

Pessoal estou com a seguinte dificuldade no desenvolvimento de um plugin para eclipse, como eu pego o caminho de um diretório que faz parte do projeto em tempo de runtime? Ou seja, eu tenho uma pasta templates dentro do projeto, e quero pegar o caminho completo dela no momento da execução, tentei usar getClassLoader… mas não rolou, se alguém tiver uma sugestão, agradeço.

2 Respostas

G

O Eclipse, a partir da versão 3.0, utiliza uma arquitetura padronizada de gerenciamento de componentes para os seus plugins. Essa arquitetura, bem documentada, é baseada numa especificação da OSGi (www.osgi.org) e a implementação utilizada no Eclipse chama-se Equinox. Via de regra, esses gerentes de componentes disponibilizam, aos componentes implantados, uma representação uniforme e abstrata de um sistema de arquivos. Não por coincidência, essa representação reflete a estrutura de diretórios/arquivos do componente no sistema de arquivos real.

Os componentes que são gerenciados pelo Equinox têm à sua disposição um cara chamado ResourceBundle. O ResourceBundle do seu plugin pode ser acessado por:

ResourceBundle.getBundle(<id do plugin>);

A partir daí, você acessa os subdiretórios via:

URL umaURL = bundle.getEntry("/umsubdiretório/umArquivo");

E pronto.

Abraços,

abstract

Fala camarada, parece que a API de desenvolvimento mudou um pouco, ou como sou total marinheiro de primeira viagem nessa empreitada de plugin, não consegui realizar o que você me sugeriu, mas o que você disse já foi bem útil para que eu pesquisasse suas dicas e conseguisse chegar a solução, que ficou assim:

String relativePath = BundleUtil.getResolvedBundleLocation("PluginID");

Realmente valeu, pois eu tava procurando em fórums do próprio eclipse e parece que é uma dúvida generalizada sobre o assunto, até cheguei a pesquisar em http://help.eclipse.org, http://wiki.eclipse.org e no santo google, mas nada, valeu!

Criado 2 de maio de 2006
Ultima resposta 4 de mai. de 2006
Respostas 2
Participantes 2