Como faço pra descobrir o caminho da minha aplicação (a pasta onde estar o .jar)?
path
tente isso
File dir1 = new File (".");
System.out.println ("Current dir : " + dir1.getCanonicalPath());
Tenta isso que é melhor e não precisa criar objetos:
String dir = System.getProperty("user.dir");
[quote=jctosta]Tenta isso que é melhor e não precisa criar objetos:
String dir = System.getProperty("user.dir");
[/quote]
magavilha
Olá;
Quando eu executo o comando
String dir = System.getProperty("user.dir");
no Windows funciona perfeitamente, me retornando a pasta onde está o .jar da aplicação;
Ja no Linux, System.getProperty(“user.dir”) me retorna a pasta do usuario do sistema, como /home/usuario .
Há alguma coisa errada com o java na minha maquina, ou essa é a configuração padrão no linux mesmo? Uma outra coisa que eu percebi, é que quando crio um novo arquivo como
File file = new File("teste.txt");
file.createNewFile();
o arquivo é criado na pasta do usuario também, e não na pasta da aplicação, como deveria ser.
Como faço pra que, tanto no linux, como no windows eu consiga pegar o caminho da aplicação?
Ou como arrumo esse “problema” (se for um) no linux?
Qualquer ajuda é bem vinda;
[quote=Malkav.Felipe]Olá;
Quando eu executo o comando
String dir = System.getProperty("user.dir");
no Windows funciona perfeitamente, me retornando a pasta onde está o .jar da aplicação;
Ja no Linux, System.getProperty(“user.dir”) me retorna a pasta do usuario do sistema, como /home/usuario .
[/quote]
Isso está certo. É isso mesmo que tem que retornar.
Se vc quer a pasta onde está o jar use File(".") como foi dito antes.
[quote=sergiotaborda][quote=Malkav.Felipe]Olá;
Quando eu executo o comando
String dir = System.getProperty("user.dir");
no Windows funciona perfeitamente, me retornando a pasta onde está o .jar da aplicação;
Ja no Linux, System.getProperty(“user.dir”) me retorna a pasta do usuario do sistema, como /home/usuario .
[/quote]
Isso está certo. É isso mesmo que tem que retornar.
Se vc quer a pasta onde está o jar use File(".") como foi dito antes.[/quote]
Eu desconfio… qual distribuição que você está usando? Qual a versão do JRE e qual o fabricante?
Eu uso Ubuntu 9.10, JRE da Sun 1.6.15. Com o seguinte programa:
public class Propriedades {
public static void main(String[] args) {
System.out.println("user.dir: " + System.getProperty("user.dir"));
System.out.println("user.home: " + System.getProperty("user.home"));
}
}
Fiz os seguintes testes (o arquivo Propriedades.java está na Área de Trabalho):
marco@pc:~$ cd Área\ de\ Trabalho/
marco@pc:~/Área de Trabalho$ javac Propriedades.java
marco@pc:~/Área de Trabalho$ java Propriedades
user.dir: /home/marco/Área de Trabalho // diretório atual!
user.home: /home/marco
marco@pc:~/Área de Trabalho$ mv Propriedades.class /home/marco/Documentos/
marco@pc:~/Área de Trabalho$ cd /home/marco/Documentos/
marco@pc:~/Documentos$ java Propriedades
user.dir: /home/marco/Documentos // diretório atual!
user.home: /home/marco
marco@pc:~/Documentos$ mv Propriedades.class /home/marco/Imagens/
marco@pc:~/Documentos$ cd /home/marco/Imagens/
marco@pc:~/Imagens$ java Propriedades
user.dir: /home/marco/Imagens // diretório atual!
user.home: /home/marco
marco@pc:~/Imagens$
O “user.dir”, assim como especificado na documentação, deve retornar o diretório atual, independentemente do SO.
[quote=marcobiscaro2112][quote=sergiotaborda][quote=Malkav.Felipe]Olá;
Quando eu executo o comando
String dir = System.getProperty("user.dir");
no Windows funciona perfeitamente, me retornando a pasta onde está o .jar da aplicação;
Ja no Linux, System.getProperty(“user.dir”) me retorna a pasta do usuario do sistema, como /home/usuario .
[/quote]
Isso está certo. É isso mesmo que tem que retornar.
Se vc quer a pasta onde está o jar use File(".") como foi dito antes.[/quote]
Eu desconfio… qual distribuição que você está usando? Qual a versão do JRE e qual o fabricante?
Eu uso Ubuntu 9.10, JRE da Sun 1.6.15. Com o seguinte programa:
public class Propriedades {
public static void main(String[] args) {
System.out.println("user.dir: " + System.getProperty("user.dir"));
System.out.println("user.home: " + System.getProperty("user.home"));
}
}
Fiz os seguintes testes (o arquivo Propriedades.java está na Área de Trabalho):
[code]
(…)
O “user.dir”, assim como especificado na documentação, deve retornar o diretório atual, independentemente do SO.[/quote]
Ha uma diferença entre a User’s current working directory (user.dir) e a pasta onde está o jar está executando.
No windows, a user.dir é C:\Documents and Settings\nomeDoUsuario
Os jars não têm que estar ai para serem executados. Eles vão estar em Applications\vendor\software\algumacoisa\xpto.jar
Imagine que vc tem uma pasta assim
/MyApplication
—/config
— /data
— app.jar
Esta pasta está algures no sistema mas vc não sabe onde.
A applicação é capaz de ler aquelas pastas com o seguinte caminho
File ("./config")
Isso indica que /MyApplication é indicada por File(".")
File(".") é a pasta de execução
user.dir é a pasta do usuário
Uma não tem nada a haver com a outra.
É verdade. Realmente eu tinha misturado as ideias de “working current directory” com o lugar onde está a aplicação. Podem, ou não, ser o mesmo diretório.
Valeu pelas respostas pessoal.
Seguinte,
Notei q se eu executar o .jar pelo terminal, user.dir retorna a pasta q ta o .jar da aplicação.
Se eu executar pelo sistema grafico, dando dois cliques no jar, só retorna a pasta da aplicação se eu executar como administrador, caso contrario, user.dir retorna a pasta de usuario.
Em ambos os casos, user.home retorna a pasta de usuario.
Mesma coisa com o File(".") . Pelo terminal funciona, pelo dois cliques no jar retorna a pasta de usuario.
Então fica a duvida: qual a diferença entre user.dir e user.home?
Uso ubuntu 9.10.
“java -version” retorna:
java version “1.6.0_16”
Java™ SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot™ Server VM (build 14.2-b01, mixed mode
instalei tanto o jre como jdk pelo Synaptic
Agradeço pela atenção e pela ajuda.