Olá pessoal
Estou enfrentando um problema simples, mas que não dô jeito de resolver.
Dentro do jar “prog.jar” (que está em C:\) tem uma classe chamada “iniciar.class”.
Essa classe é encarregada de fazer várias coisas, inclusive usar Reflection.
Eu preciso usar Reflection para executar um método que está dentro do arquivo “serexecutado.class” (também na pasta C:\, mas fora do jar)
Para representar melhor, vai meu diretório C:\
Arquivos de Programas
WINDOWS
Usuários
prog.jar
serexecutado.class
Ou seja, a classe que está dentro do prog.jar tem que usar Reflection para executar o método do serexecutado.class.
É aí que está meu problema: quando eu tento usar Reflection, ele tenta achar a classe “serexecutado.class” dentro do jar (mas como vocês podem ver, ela não está dentro, está fora do jar).
Alguém pode me ajudar a aprimorar o código abaixo para realizar o que pretendo?
try {
Class cls = Class.forName("serexecutado");
Method meth = cls.getMethod("metodo");
Object retobj = meth.invoke(cls);
String valorRetornado = (String) retobj;
System.out.println(valorRetornado);
}
catch (Throwable e) {
System.out.println("Erro no Reflection: " + e);
}
OBS: Peço que me perdoem se estiver fazendo uma pergunta besta, encontrei várias maneiras no Google de usar isso dentro do jar e suas pastas, mas nenhuma fora do mesmo.
Ou voce pode via Reflection usar o método addUrl do ClassLoader (getClass().getClassLoader()) adicionando o caminho da classe ou de um jar para o ClassLoader.
Após isso o Class.forName deve funcionar.
[quote=Mark_Ameba]Ou voce pode via Reflection usar o método addUrl do ClassLoader (getClass().getClassLoader()) adicionando o caminho da classe ou de um jar para o ClassLoader.
Após isso o Class.forName deve funcionar.[/quote]
Não estou muito acostumado com o javadoc. Procurei, achei o ClassLoader, só que não consegui achar o addURL. Desculpe mas, será que você pode me dar um exemplo?