Diretório onde está o .class

Quero gravar um arquivo INI no mesmo diretório onde estão os .class, mas eu não quero especificar o diretório no código. Se eu apenas dou o nome do arquivo que estou criando (“nome.ini”) no FileWriter

FileWriter wr = new FileWriter (inifile);

ele é gravado no diretório onde eu chamei o aplicativo (java meuaplicativo). Podem me ajudar?[/code]

Veja se a API de Reflection pode lhe ajudar :slight_smile:

Não ha como descobrir o caminho fisico ( em q diretorio ela está gravada ) de uma classe em java :frowning:

Mas nao há como saber o caminho relativo (onde está o .class)?

Há como sim aborges… Através do carregador da classe (o classloader).
Veja, esse método eu adaptei de um post no java.net. Eu uso para obter o diretório de partida do JAR da minha aplicação. Assim eu posso consultar sub-diretórios que partem (filhos) do diretório de partida (/conf, por exemplo).

[code]
/**
* Obtém o diretório onde está contido o diretório de partida (o diretório que contém o
* arquivo JAR da aplicação). Este fragmento de código foi obtido de replies do fórum
* java.net e adaptadado para executar a ação mencionada.

*/
public String getStartupDir() {

        String path = "";
        String baseURL = getClass().getResource("/images").getFile();
               /* "/images" is an existing dir inside jar */
        
        try {
              baseURL = URLDecoder.decode(baseURL, "ISO-8859-1");
              if (baseURL.startsWith("file:"))
                    baseURL = baseURL.substring(baseURL.indexOf(":")+1);
              
              File fBase = new File(baseURL);         // original URL ref. to jar archive
              File jarFile = fBase.getParentFile();   // jar file reference
              File rootDir = jarFile.getParentFile(); // root directory which contains jar file
              path = rootDir.getCanonicalPath();
        }
        catch (Exception e) {
              e.printStackTrace();
        }
        return path;
  }[/code]

:wink: muito útil.

rlicciardo, se a sua aplicação for apenas um ou mais arquivos .class (em um diretório qualquer – se não estiver montada em um arquivo JAR)… use o seguinte:

String path = "";
File f = new File(".");
try {
   path = f.getCanonicalPath();
}
catch (Exception e) {
   // trate a excecao...
}

Eu vou ter que montar o jar. (puxa, estou apanhando com isso tbm, para determinar no manifesto qual é o main… num tô conseguindo). E como eu executo o jar se o main precisa de parametros? O jar pode ser instalado em qq diretorio?

Dá uma pesquisada aqui no fórum; você vai achar quase tudo o que precisar do básico até algumas aberrações :smiley:

Dá uma olhada em artigos/tutoriais, tem um sobre arquivos JAR.