Diretório onde está o .class

7 respostas
R

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]

7 Respostas

J

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

aborges

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

R

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

D

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).

/**
       *  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). <i>Este fragmento de código foi obtido de replies do fórum 
       *  <b>java.net</b> e adaptadado para executar a ação mencionada.</i> 
       */
      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;
      }

;) muito útil.

D

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...
}
R

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

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.

Criado 24 de junho de 2004
Ultima resposta 24 de jun. de 2004
Respostas 7
Participantes 4