A propriedade user.dir nao funciona no Ubuntu?

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?

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.

[quote=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.
[/quote]

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

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).

[quote=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).

[/quote]

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:

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

Obrigado pela atenção.

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?

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

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?