Pegar Diretório do Jar em execução

4 respostas
G

E ae Galera!

O rolo da vez é o seguinte, criei uma app que configura conexões com bancos, ficou show, exportei o jar dela, ao configurar a conexão com ela é gerado um txt no mesmo diretório do jar, nesse txt está os dados de conexão como driver,user e por ai vai. Eu importo esse jar nos projetos para usar as classes de conexão e persistencia que fiz, até ai blz.
Dentro do jar tem uma classe de conexão chamada GFConnection, onde eu tento pegar o caminho do jar, pra pegar os dados de conexão salvo no txt:

String caminho = System.getProperty("user.dir")+System.getProperty("file.separator")+"conexao.txt";

Mil maravilhas em J2SE, eis que eu fui testa em uma aplicação WEB ele retorna:

C:\Program Files (x86)\Apache Software Foundation\Apache Tomcat 6.0.26\bin\conexao.txt (O sistema não pode encontrar o arquivo especificado)

Mesmo o jar estando dentro da aplicação web, mesmo o código estando dentro da classe do jar ele ainda pega o diretório do projeto em execução, como posso resolver isso ?

Valeu, tentei procurar aqui algo que se encaixava no meu problema mas não encontrei

4 Respostas

V

O que vc espera retornar quando estiver no servidor web? Lembre-se que o usuário do servidor não é quem está usando o browser, mas o próprio servidor em si.

G

Entendi amigo, porém eu realmente preciso fazer que as aplicações que utilizam o jar possam identificar a pasta real de onde ele está. Utilizando o getResource() não deu também:

/C:/Users/Guii/Documents/NetBeansProjects/MlearningAdm/build/web/WEB-INF/lib/GFConnection.jar

Ele enchergou o jar dentro do projeto, porém o jar se encontra no desktop, sei que tem como, pois o netbeans faz algo parecido, se o jar está em uma pasta e depois vc muda ele, o netbeans sabe disso e da o problema de referência

V

Por incrível que pareça, uma das características infernais do Java é que não existe uma maneira segura e 100% confiável de se obter o caminho que o .jar está. Especialmente num servidor web.
Coloque em seu programa algum lugar para o usuário escolher esse caminho, ou baseie-se em alguma variável de ambiente, ou veja se seu servidor já não tem alguma pasta específica para isso.

G

então amigo concordo com você, antes era um chooser que tinha, ai quis tirar ele pra agiliza o processo, mas não pego o local do jar por nada. O duro é o seguinte, antes eu salvava em um arquivo, mas eu tinha que saber aonde o usuário salvo esse cara, para isso eu tinha que criar outro arquivo e deixa no mesmo diretório da app, ai eu caiu novamente nessa história do web service, vo criar uma pasta especifica nele e testar. valeu.

Criado 7 de março de 2011
Ultima resposta 7 de mar. de 2011
Respostas 4
Participantes 2