Boa tarde, dei uma procurada mas não encontrei.
Tem como eu saber se onde o jar esta sendo executado?
ex. c:\temp\meujar.jar
Verificar de onde o jar esta sendo executado
9 Respostas
Dê uma nova olhada na API de FileInputStream e ZipFile
System.getProperty("user.dir");
ele quer saber o diretório que o jar esta sendo executado e não o home do usuario logado… tente isso
java.lang.System.out.println(new File(".").getAbsolutePath());
[quote=janjan]ele quer saber o diretório que o jar esta sendo executado e não o home do usuario logado… tente isso
java.lang.System.out.println(new File(".").getAbsolutePath());
Obriado a todos, janjan era isso mesmo que queria, funcionou.
vlw
Na maioria das vezes a técnica do janjan funciona, mas às vezes pode falhar. Basta que a JVM tenha sido disparada a partir de uma pasta diferente daquela em que está o arquivo JAR:
java -jar …\subpasta\arquivoJar.jar
Na maioria das vezes a técnica do janjan funciona, mas às vezes pode falhar. Basta que a JVM tenha sido disparada a partir de uma pasta diferente daquela em que está o arquivo JAR:java -jar …\subpasta\arquivoJar.jar
Realmente, mas no meu caso são usuario leigos, irão executar sempre clicando, creio que não devo ter problemas com isso.
[quote=janjan]ele quer saber o diretório que o jar esta sendo executado e não o home do usuario logado… tente isso
java.lang.System.out.println(new File(".").getAbsolutePath());
Boa tarde a todos.
Existe também outro cuidado que voce precisa ter com o método “getAbsolutePath()” que são as barras invertidas “”, ou seja, ele retorna uma string assim:
file:\C:\MeuDiretorio\arquivo.jar
A barra invertida no java é um caracter especial que serve para fazer quebra de linha e concatenação de caracteres, se voce estiver recuperando esse valor dentro de uma classe java, o compilador pode interpretá-lo como sendo esse caracter especial e gerar exceção na aplicação.
Assim sendo eu prefiro utilizar o método “toURL()” da classe File, que retorna uma string com as barras normais, assim:
File arquivo = new File(".");
String path = arquivo.toURL().toString();
path.replaceAll("file:/", "");
// O resultado será: C:/MeuDiretorio/arquivo.jar
Me perdoe, mas você testou o código que eu postei, antes de afirmar isso?
Só para referencias…
E na própria documentação?
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#getProperties()
Danke…
Me perdoe, mas você testou o código que eu postei, antes de afirmar isso?
Só para referencias…
E na própria documentação?
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#getProperties()
Danke…
testei tb, mas tem o mesmo problema que o roger_rf falou, mas funcionou tb.
vlw