pegar diretorio da aplicação.

Java

09/04/2009

bom dia pessoal, estou a algum tempo ja estudando java, + sempre voltado a web, esses dias decidi estudar 1 pouco de swing pra n ficar batido, criei uma aplicação bem simples mesmo, so para fixar, + me veio a ideia de salvar as configurações em 1 xml na mesma pasta onde estaria o .jar, alguem conhece alguma função q capture esse diretorio? tentei usar o System.getProperty("user.dir") no eclipse ele cria o arquivo na pasta do projeto, + quando exporto o .jar, so Deus sabe pra onde vai o arquivo criado rsrsrsrs, muito obrigado pela atenção.
Clebio Silva

Clebio Silva

Curtidas 0

Respostas

Alexandre Viriato

Alexandre Viriato

09/04/2009

[quote="ranzou"]bom dia pessoal, estou a algum tempo ja estudando java, + sempre voltado a web, esses dias decidi estudar 1 pouco de swing pra n ficar batido, criei uma aplicação bem simples mesmo, so para fixar, + me veio a ideia de salvar as configurações em 1 xml na mesma pasta onde estaria o .jar, alguem conhece alguma função q capture esse diretorio? tentei usar o System.getProperty("user.dir") no eclipse ele cria o arquivo na pasta do projeto, + quando exporto o .jar, so Deus sabe pra onde vai o arquivo criado rsrsrsrs, muito obrigado pela atenção.
Bom cara? Vê se isso te ajuda...
package src;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;



public class MainTeste {

	
	public static void main(String[] args) {
	
		MainTeste main = new MainTeste();
		System.out.println(main.getApplicationPath());
	}
	
	/**
	 * Retorna o caminho onde a aplicação está sendo executada
	 * @return caminho da aplicação
	 */
	public String 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", " ");
        }
	}
	
	/**
	 *  retorna o caminho quando a aplicao est dentro de um 
	 *  arquivo .jar
	 * @param jarFile
	 * @return
	 */
	private String findJarParentPath(File jarFile) {
        while (jarFile.getPath().contains(".jar"))
            jarFile = jarFile.getParentFile();
        
        return jarFile.getPath().substring(6);
    }
}
GOSTEI 0
Clebio Silva

Clebio Silva

09/04/2009

[quote="afviriato"][quote="ranzou"]bom dia pessoal, estou a algum tempo ja estudando java, + sempre voltado a web, esses dias decidi estudar 1 pouco de swing pra n ficar batido, criei uma aplicação bem simples mesmo, so para fixar, + me veio a ideia de salvar as configurações em 1 xml na mesma pasta onde estaria o .jar, alguem conhece alguma função q capture esse diretorio? tentei usar o System.getProperty("user.dir") no eclipse ele cria o arquivo na pasta do projeto, + quando exporto o .jar, so Deus sabe pra onde vai o arquivo criado rsrsrsrs, muito obrigado pela atenção.
Bom cara? Vê se isso te ajuda... ajudou bastante, ja retorna direitinho o diretorio do .jar + mesmo assim ele n cria o arquivo, tentei modificar para o c:, quando executo pelo eclipse, ele cria o arquivo, + quando exporto o .jar, ele n cria, alguem sabe dizer pq? to usando o jdom pra criar o arquivo essa e a parte do codigo q cria o arquivo
String xml = xout.outputString(doc);	
	fileWrite = new FileWriter(new File(appl+"/tabelas.xml"));
	fileWrite.write(xml);
	fileWrite.close();
GOSTEI 0
Alexandre Viriato

Alexandre Viriato

09/04/2009

[quote="ranzou"][quote="afviriato"][quote="ranzou"]bom dia pessoal, estou a algum tempo ja estudando java, + sempre voltado a web, esses dias decidi estudar 1 pouco de swing pra n ficar batido, criei uma aplicação bem simples mesmo, so para fixar, + me veio a ideia de salvar as configurações em 1 xml na mesma pasta onde estaria o .jar, alguem conhece alguma função q capture esse diretorio? tentei usar o System.getProperty("user.dir") no eclipse ele cria o arquivo na pasta do projeto, + quando exporto o .jar, so Deus sabe pra onde vai o arquivo criado rsrsrsrs, muito obrigado pela atenção.
Bom cara? Vê se isso te ajuda... ajudou bastante, ja retorna direitinho o diretorio do .jar + mesmo assim ele n cria o arquivo, tentei modificar para o c:, quando executo pelo eclipse, ele cria o arquivo, + quando exporto o .jar, ele n cria, alguem sabe dizer pq? to usando o jdom pra criar o arquivo essa e a parte do codigo q cria o arquivo
String xml = xout.outputString(doc);	
	fileWrite = new FileWriter(new File(appl+"/tabelas.xml"));
	fileWrite.write(xml);
	fileWrite.close();
Bom, dá um print no seu File, pra ver se está retornonando certo.. verifica tb as permissões do diretório, se estiver usando Linux ou algum sistema que controle isso
GOSTEI 0
Clebio Silva

Clebio Silva

09/04/2009

Bom, dá um print no seu File, pra ver se está retornonando certo.. verifica tb as permissões do diretório, se estiver usando Linux ou algum sistema que controle isso
ja dei o print saiu tudo direitinho, crieu uma area de texto e mandei sair o valor dentro, saiu perfeito, e to usando windows mesmo, muito estranho isso =/ pq quando mando debugar pelo eclipse, faz tudo direitinho, le o arquivo, carrega as informações em 1 bean se o arquivo não existe, cria ele com as informações padrões, e tmb edita q e uma beleza, + quando exporto o .jar da aplicação ele abre direitinho, + n cria o arquivo de geito nenhum.
GOSTEI 0
Carlos Heuberger

Carlos Heuberger

09/04/2009

[quote="ranzou"]
Bom, dá um print no seu File, pra ver se está retornonando certo.. verifica tb as permissões do diretório, se estiver usando Linux ou algum sistema que controle isso
ja dei o print saiu tudo direitinho, crieu uma area de texto e mandei sair o valor dentro, saiu perfeito, e to usando windows mesmo, muito estranho isso =/ pq quando mando debugar pelo eclipse, faz tudo direitinho, le o arquivo, carrega as informações em 1 bean se o arquivo não existe, cria ele com as informações padrões, e tmb edita q e uma beleza, + quando exporto o .jar da aplicação ele abre direitinho, + n cria o arquivo de geito nenhum.
não acompanhei direito a discusão, mas usando o getResource dentro de um JAR, voce vai obter um caminho/diretório dentro desse JAR. Lá voce não consegue (de maneira simples) criar um novo arquivo. Para verificar, poe uns System.out.println com os caminhos:
...
File file = new File(appl+"/tabelas.xml");
System.out.println(appl);
System.out.println(file.getAbsolutePath());
fileWrite = new FileWriter(file);
...
[]]
GOSTEI 0
Wagnerbackes

Wagnerbackes

09/04/2009

[quote="ranzou"]
Bom, dá um print no seu File, pra ver se está retornonando certo.. verifica tb as permissões do diretório, se estiver usando Linux ou algum sistema que controle isso
ja dei o print saiu tudo direitinho, crieu uma area de texto e mandei sair o valor dentro, saiu perfeito, e to usando windows mesmo, muito estranho isso =/ pq quando mando debugar pelo eclipse, faz tudo direitinho, le o arquivo, carrega as informações em 1 bean se o arquivo não existe, cria ele com as informações padrões, e tmb edita q e uma beleza, + quando exporto o .jar da aplicação ele abre direitinho, + n cria o arquivo de geito nenhum.
Bom, tive um problema parecido com o XStream, no Eclipse funcionava de boa e no .jar não funcionava, não criava os arquivos xml. Depois de testar varias coisas descobri que no momento de exportar tenho que selecionar o Runnable JAR file para que tudo funcione de acordo. Já que não achei essa resposta em nenhum lugar decide compartilhar pois o problema é bem parecido.
GOSTEI 0
POSTAR