Caminho da aplicação

2 respostas
marciofermino

Amigos como eu poderia pegar o caminho da aplicacao para o relatorio ???

eu ate consegui fazer, dentro da IDE roda legal, mais quando quando compilado.. o .jar. nao consegue
mais executar...

acredito por falta de conhecimento existir algum comando ou instrucao java que faca isso;.

o meu código:
public String getApplicationPath() {
        //u.getApplicationPath());  


        String url = getClass().getResource(getClass().getSimpleName() + ".class").getPath();
        
        File dir = new File(url).getParentFile();
        String path = null;

        if (dir.getPath().contains(".jar")) {
            path = findJarParentPath(dir);
        } else {
            path = dir.getPath();
        }
        try {
            return URLDecoder.decode(path, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            return path.replace("%20", " ");
        }
String caminho = u.getApplicationPath();

            caminho = caminho.replace("\", "/")+"/rel1.jasper";
 String caminho = u.getApplicationPath();

            caminho = caminho.replace("\", "/")+"/rel1.jasper";



            parameters.put("parametro_nome", variavel);

            //JasperPrint print = JasperFillManager.fillReport("C:/Temp/teste/src/teste/rel1.jasper", parameters, conn);
            //JasperPrint print = JasperFillManager.fillReport(caminho, parameters, conn);

            JasperPrint print = JasperFillManager.fillReport(caminho, parameters, conn);
            
            
            JasperViewer jrviewer = new JasperViewer(print, false);
 jrviewer.setVisible(true);

Obrigado.

2 Respostas

ViniGodoy

Essa é uma daquelas coisas que é facílimo em outras linguagens, mas virtualmente impossível em Java.

O mais próximo que cheguei foi isso aqui (e é muito parecido com o seu, por sinal, você não tirou ele aqui do GUJ?):

private static String findJarParentPath(File jarFile)
    {
        while (jarFile.getPath().contains(".jar"))
            jarFile = jarFile.getParentFile();

        return jarFile.getPath().substring(6);
    }

    /**
     * Return the instalation path of any class.
     * 
     * @param theClass The class to find the installation path.
     * @return The installation path of any class.
     */
    public static String getInstallPath(Class< ? > theClass)
    {
        String url = theClass.getResource(theClass.getSimpleName() + ".class").getPath();
        File dir = new File(url).getParentFile();

        if (dir.getPath().contains(".jar"))
            return findJarParentPath(dir).replace("%20", " ");

        return dir.getPath().replace("%20", " ");
    }

Nota: você deve passar a classe com o seu main no parâmetro.
E sim, é uma ginastica imensa, e não é garantida em todos os ambientes (como em web, por exemplo).

Isso porque, na prática, o diretório de uma aplicação Java pode estar virtualmente qualquer lugar, mesmo de um outro lado de uma conexão, na rede.

marciofermino

desculpe nao entendi… vc poderia exemplificar ??

ou mostrar o código ?

Obrigado

Criado 23 de setembro de 2008
Ultima resposta 23 de set. de 2008
Respostas 2
Participantes 2