Resumo
Paths.get(getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).toString();Introdução
Tive um problema quando estava tentado acessar o local onde minha aplicação estava sendo executada (dentro da pasta bin do meu projeto), sempre que passava-se pelo trecho de código o path do arquivo parecia como errado, a solução para esse problema foi utilizar a classe java.nio.file.Paths.
Exemplo de retorno com erro:
/C:/Users/Robson/dev/androis/Teste/bin/
Exemplo de retorno esperado:
Abaixo é possível visualizar a resolução deste problema.
import java.net.URISyntaxException;
import java.nio.file.Paths;
public class TesteMain {
public static void main(String args[]) throws URISyntaxException {
TesteMain testeMain = new TesteMain();
System.out.println("Sem correção");
System.out.println(testeMain.getClass().getProtectionDomain().getCodeSource().getLocation());
System.out.println("Com correção");
System.out.println(Paths.get(testeMain.getClass().getProtectionDomain().getCodeSource().getLocation().toURI()));
}
}
Após a execução do código acima o resultado expresso será:
Sem correção
file:/C:/Users/Ge3Software/dev/androis/Teste/bin/
Com correção
C:\Users\Ge3Software\dev\androis\Teste\bin