Java: Como saber onde o frasco está localizado em Linux
-
05-07-2019 - |
Pergunta
No Linux, a JVM define o trabalho direcory igual ao homefolder do usuário. No Windows, esta é a pasta onde o frasco está localizado. Como posso descobrir onde o jar (do meu app) está localizado mudar o dir de trabalho?
Martijn
Solução
Tente obter o caminho para o frasco com este código:
String path = YourClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath();
Em seguida, você pode remover o "* .jar" parte com:
path=path.substring(0, path.lastIndexOf('/')+1);
Eu tive o mesmo problema com um jogo java quando eu precisava para abrir um arquivo no mesmo diretório o frasco estava.
duplo clique no frasco no linux não abrir o arquivo. Claro que você pode abrir uma linha de comando e mudança dir à dir frasco e depois executar o frasco de lá, mas eu precisava dar um duplo clique no frasco.
Outras dicas
Em ambos os casos é o diretório real. Sob as janelas automaticamente o diretório real está definida para a base-dir do frasco, se você executá-lo a partir do Explorer. Sob linux casa-diretório é o diretório real para o seu GUI. Para definir a gravação diretório um curto shell-script, o que define o diretório atual (com o CD-comando) e, em seguida, executa o frasco (com javaw -jar xyz.jar).