Re: [java-list] Diretorio do arquivo .class

2001-03-05 Por tôpico Mister M

Pra fazer isso,vc naum precisa saber onde a classe estah. Pegue o class do
MinhaClasse e use o getResourceAsStream("nome_do_arquivo"). Vc vai conseguir
um InputStream pra ele. Ai, eh soh alegria!

Michael Nascimento Santos
Analista/Consultor
CPM Sistemas - www.cpm.com.br

From: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: [java-list] Diretorio do arquivo ".class"
Date: Sat, 03 Mar 2001 16:17:41 GMT

Alguem sabe se existe uma forma de descobrir em qual diretorio esta o
arquivo ".class" de um objeto instanciado?

Por exemplo:
// Qual o diretorio do arquivo MinhaClasse.class que foi carregado
// pela JVM para instanciar o objeto "obj"?
MinhaClasse obj = new MinhaClasse();

Tenho um arquivo de configuracao "arquivo.config" gravado no mesmo
diretorio da classe "MinhaClasse.class". Esta classe tem um metodo que faz
a leitura do arquivo.config. Gostaria fazer com que este metodo funcione
independente do diretorio de instalacao da classe, ou seja, nao importa em
qual diretorio a classe "MinhaClasse.class" esteja, o arquivo de
configuracao "arquivo.config" sempre sera achado, pois os dois sempre
estarao juntos.

Abracos,
Wilton


-- LISTA SOUJAVA 
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-


!--
_
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.


_
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




Re: [java-list] Diretorio do arquivo .class

2001-03-04 Por tôpico Bruno F. Souza


Voce nao precisa saber o diretorio do seu .class para conseguir carregar
recursos relacionados a ele, mesmo porque, o que voce faria com essa
informacao no caso da sua classe ter sido carregada de outra maquina
(lembre-se, Java _incentiva_ o carregamento de classes via rede), ou qual 
seria o diretorio se a sua classe tivesse sido carregada de dentro de um
.jar (que eh a forma padrao de distribuir aplicacoes Java)?

O responsavel por carregar as classes eh o ClassLoader, e ele sabe carregar
os recursos associados a uma classe (sejam eles imagens, arquivos de
configuracao, ou o que voce quiser), mesmo que esses recursos sejam
carregados via rede.

De uma olhada na documentacao as classes java.lang.ClassLoader e
java.lang.Class, e veja os metodos getResource e similares.

Um metodo estatico para fazer o que voce quer seria:

public static InputStream carregaRecurso(String nomeDaClasse,
 nomeDoRecurso) 
{
Class c = null;
try {
c = Class.forName(nomeDaClasse);
} catch (Exception ex) {
// isso nao deve acontecer se a sua classe existir
System.out.println("Classe "+nomeDaClasse+
   " nao encontrada.");
return null;
}
InputStream is = c.getResourceAsStream(nomeDoRecurso);
return is;
}

Para usar voce faria:

[...]

InputStream is = 
carregaRecurso("seu.package.SuaClasse", "nomeDoArquivo");

if (is != null) {
BufferedReader rd = 
new BufferedReader(new InputStreamReader(is));

// le a partir do rd
}

[...]

Observe que nomeDaClasse eh o fully qualified class name
(seu.package.SuaClasse) e eh bom voce verificar o nome que voce tem que dar
para nomeDoRecurso na documentacao, que isso depende de algumas coisas (na
verdade, depende do ClassLoader que esta sendo usado, mas isso eh uma outra
questao que nao vale a pena entrar no merito nesse momento). 

Em geral, voce usa um nome separado por "/" que pode ser ou um nome
absoluto (que inicia com "/"), nesse caso o recurso sera carragado a partir
do diretorio "/" contexto da sua classe (ou seja, a partir do diretorio que
contem os seus packages), ou voce passa um nome relativo (que nao comeca
com "/") e nesse caso o recurso sera carregado de um diretorio a partir do
diretorio que contem a sua classe.

Portanto, para um arquivo no mesmo diretorio que sua classe, voce em vai
passar apenas "nomeDoArquivo" para o metodo ai em cima.

Observe que isso mostra o quao importante eh voce sempre incluir suas
classes em packages, o que muita gente deixa de fazer.

Bruno.

[EMAIL PROTECTED] wrote:

 Alguem sabe se existe uma forma de descobrir em qual diretorio esta o arquivo 
".class" de um objeto instanciado?
 
 Por exemplo:
 // Qual o diretorio do arquivo MinhaClasse.class que foi carregado
 // pela JVM para instanciar o objeto "obj"?
 MinhaClasse obj = new MinhaClasse();  
 
 Tenho um arquivo de configuracao "arquivo.config" gravado no mesmo diretorio da 
classe "MinhaClasse.class". Esta classe tem um metodo que faz a leitura do 
arquivo.config. Gostaria fazer com que este metodo funcione independente do diretorio 
de instalacao da classe, ou seja, nao importa em qual diretorio a classe 
"MinhaClasse.class" esteja, o arquivo de configuracao "arquivo.config" sempre sera 
achado, pois os dois sempre estarao juntos.
 
 Abracos,
 Wilton 
 
 
 -- LISTA SOUJAVA  
 http://www.soujava.org.br  -  Sociedade de Usurios Java da Sucesu-SP 
 dvidas mais comuns: http://www.soujava.org.br/faq.htm
 regras da lista: http://www.soujava.org.br/regras.htm
 para sair da lista: envie email para [EMAIL PROTECTED] 
 -
 
 
 

Bruno.
__
Bruno Peres Ferreira de Souza Brazil's JavaMan
http://www.javaman.com.brmailto:[EMAIL PROTECTED]
if I fail, if I succeed, at least I live as I believe



-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usurios Java da Sucesu-SP 
dvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-




[java-list] Diretorio do arquivo .class

2001-03-03 Por tôpico wilton

Alguem sabe se existe uma forma de descobrir em qual diretorio esta o arquivo ".class" 
de um objeto instanciado?

Por exemplo:
// Qual o diretorio do arquivo MinhaClasse.class que foi carregado
// pela JVM para instanciar o objeto "obj"?
MinhaClasse obj = new MinhaClasse();  

Tenho um arquivo de configuracao "arquivo.config" gravado no mesmo diretorio da classe 
"MinhaClasse.class". Esta classe tem um metodo que faz a leitura do arquivo.config. 
Gostaria fazer com que este metodo funcione independente do diretorio de instalacao da 
classe, ou seja, nao importa em qual diretorio a classe "MinhaClasse.class" esteja, o 
arquivo de configuracao "arquivo.config" sempre sera achado, pois os dois sempre 
estarao juntos.

Abracos,
Wilton 


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-