A propriedade user.dir nao funciona no Ubuntu?

8 respostas
pintofree

Sou novato no ubuntu. Estamos migrando um projeto desenvolvido em java para ele (com netbeans), mas temos um problema… A propriedade user.dir (System.getProperty(“user.dir”)), que deveria apontar para a pasta dist do projeto, aponta sempre para minha pasta de usuário…

Tentando esclarecer: quando rodo o projeto pelo NetBeans, ele roda perfeitamente, encontra as pastas de configuração e libs; mas ao tentar rodar o mesmo pelo JAR, ele aponta o path de execução para minha pasta pessoal (qnd faço o mesmo no windows, não ocorre erro), e como aponta para a pasta pessoal ele nao acha as configurações e libs.

Alguem ja passou por um problema parecido?? ou sabe onde pode estar o problema?

8 Respostas

T

No Linux “user.dir” normalmente aponta para o diretório corrente de onde você invocou o java (executável).

No seu caso, como você efetuou um duplo-clique no JAR, ele não sabe que diretório você precisa usar, então usa o diretório padrão do usuário.

pintofree

thingol:
No Linux “user.dir” normalmente aponta para o diretório corrente de onde você invocou o java (executável).

No seu caso, como você efetuou um duplo-clique no JAR, ele não sabe que diretório você precisa usar, então usa o diretório padrão do usuário.

hum, é alguem tem um ideia de como contornar este problema?

T

Nunca vi funcionar direito clicar duas vezes sobre o JAR, na prática.
É que você fica muito dependente de o que o sistema operacional vai fazer, e muitas coisas você não pode especificar no MANIFEST.MF. Uma coisa muito boba que não dá para especificar lá, por exemplo, é qual a memória que você quer usar (-Xmx).

Eu prefiro escrever uma shell script que faça as seguintes coisas:

  • Mude para o diretório desejado;
  • Chame o seu jar (com java -jar) e passando os parâmetros adequados (-classpath, -Xmx etc.)
  • Eu recomendaria até “chumbar” o diretório correto do Java - pode ser que o java não esteja no path, ou então que esteja usando o Java errado (versão 1.3 por exemplo).
pintofree

thingol:
Nunca vi funcionar direito clicar duas vezes sobre o JAR, na prática.
É que você fica muito dependente de o que o sistema operacional vai fazer, e muitas coisas você não pode especificar no MANIFEST.MF. Uma coisa muito boba que não dá para especificar lá, por exemplo, é qual a memória que você quer usar (-Xmx).

Eu prefiro escrever uma shell script que faça as seguintes coisas:

  • Mude para o diretório desejado;
  • Chame o seu jar (com java -jar) e passando os parâmetros adequados (-classpath, -Xmx etc.)
  • Eu recomendaria até “chumbar” o diretório correto do Java - pode ser que o java não esteja no path, ou então que esteja usando o Java errado (versão 1.3 por exemplo).

Valeus thingol, ja estava a 2 dias tentando achar o erro e ja tava achando q ele era no ubuntu, ttinha mexido no meu manifest todo e nda, pra resolvir criar um arquivel shell q roda pra mim :slight_smile:

Malkav.Felipe

Desculpem ressucitar a thread… mas existe alguma solução para que no linux a propriedade user.dir funcione nprmalmente?

Obrigado pela atenção.

javer

Eu também estou procurando saber sobre isso.

Preciso que no Linux (Ubuntu) o user.dir mostre, ex: /home/francisco, e não /home/francisco/NetBeansProjects/PASTA_PROJETO (onde foi chamado o sistema)

Preciso disso porque é dentro do diretório do usuário que vai estar a pasta do sistema para cada máquina (arquivos de configuração, etc).

Alguém sabe como pegar somente o diretório do usuário em Linux?

javer

Acabei optando por montar o diretório com o usuário:String userDirLinux = "/home/" + System.getProperty("user.name");
Alguém vê algum problema nisso?

Malkav.Felipe

Para o seu caso, use System.getProperty(“user.home”), que ele retorna a pasta do usuario;

No meu caso tanto user.dir e user.home retornam a pasta do usuario, e u gostaria que a propriedade user.dir retornasse exatamente o que retorna o seu caso :stuck_out_tongue: , pois não é essa a ideia dessa propriedade?

Criado 13 de maio de 2008
Ultima resposta 21 de jan. de 2010
Respostas 8
Participantes 4