Boa tarde,
Tenho o meu arquivo .jar. Dentro deste arquivo existem varias pastas e varias classes com extensão .class
Dentro de uma .class existe uma variavel que quero acessa-la.
Fiz um programa para isso.. segue:
JarFile
lo_jar_read = null;
try
{
//
// Recebe a instancia Carro.jar lido do disco.
//
lo_jar_read = new JarFile("Carro.jar");
//
// Recebe um enumeration contendo os diretórios presentes do jar.
//
Enumeration<JarEntry>
lo_enum = lo_jar_read.entries();
//
// Percorre os diretórios lidos no jar.
//
while (
lo_enum.hasMoreElements()
)
{
//
// Recebe o próximo diretório do jar.
//
JarEntry
jarEntry = (JarEntry) lo_enum.nextElement();
//
// Recebe o nome do diretório atual lido no jar.
//
String
arquivo = jarEntry.getName();
System.out.println(arquivo);
//
// Verifica se o diretório "carro/modelo/Modelo.class" está lá dentro ...
//
if (
arquivo.equals("carro/modelo/Modelo.class")
)
{
//
// Recebe a classe no qual irá ser utilizada.
//
Class
lo_class = arquivo.getClass(); //PROBLEMA! eu gostaria de pegar o Modelo.class
try
{
//
// Recebe a instancia da classe que será utilizada.
//
Object
lo_object_class = lo_class.newInstance();
//
// Se for Modelo.class
//
if (
lo_object_class instanceof Modelo
)
{
//
// Recebe a classe Modelo.
//
Modelo
lo_modelo = (Modelo)lo_object_class;
//
// Mostra a versão da classe.
//
System.out.println(lo_modelo.VERSION);
}
}
catch (InstantiationException e)
{
e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
break;
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
//
// Sempre executa para fechar a leitura do arquivo jar.
//
finally
{
//
// Se existe um arquivo jar aberto ...
//
if (
lo_jar_read != null
)
{
try
{
//
// Fecha o arquivo JAR
//
lo_jar_read.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Notem que na codificação abaixo, estou pegando a referencia (class) da minha variavel arquivo.
//
// Recebe a classe no qual irá ser utilizada.
//
Class
lo_class = arquivo.getClass();
Então, é ai que está o grande problema. O getClass desta classe arquivo é String e não o Modelo.class que eu gostaria de pegar.
Muito dificil de explicar né?! Eu quero acessar uma variavel dentro da classe Modelo.class lida do meu arquivo .jar
Alguem pode me ajudar ?