Pessoal, resolvi de uma forma, mas gostaria de saber se alguém conhece outra forma de fazer isso para uma aplicação desktop.
O problema é o seguinte
Estou chamando um relatório na minha aplicação e preciso passar um parametro que é o caminho do sub relatório.
teria como pegar o caminho real de uma pasta que esta dentro do meu jar que ficasse desta forma?
“C:\Documents and Settings\rodrigo.rosalin\Meus documentos\NetBeansProjects\ControleAcessoPrincipal\src\Relatorios”
Para chamar meu relatorio estou passando o caminho estatico da pasta que contém o sub relatório ficando assim, mas não posso deixar desta forma.
HashMap<Object,Object> map = new HashMap<Object,Object>();
map.put("SUBREPORT_DIR","C:\\Documents and Settings\\rodrigo.rosalin\\Meus documentos\\NetBeansProjects\\ControleAcessoPrincipal\\src\\Relatorios\\");
getClass().getResource("/Relatorios/").getPath();
Utilizando o metodo acima é retornado um caminho assim.
/C:/Documents%20and%20Settings/rodrigo.rosalin/Meus%20documentos/NetBeansProjects/ControleAcessoPrincipal/build/classes/Relatorios/
A única solução encontrada até agora para exibir o relatório foi criar um método que manipulasse a String.
public String pegaCaminhoReal(String caminho)
{
String caminhoErrado = getClass().getResource("/Relatorios/").getFile();
String novo = caminhoErrado.replaceFirst("/","").replace("/", "\\").replace("%20"," ");
return novo;
}
//ficando assim na hora de passar o parâmetro
HashMap<Object,Object> map = new HashMap<Object,Object>();
map.put("SUBREPORT_DIR",this.pegaCaminhoReal("/Relatorios/"));
Isso me cheira um pouco mal, alguém conhece outra forma?