Carregar um jar dinamicamente

4 respostas
D

Pessoal,

Estou precisando carregar um jar dinamicamente na minha aplicação, mas esta dando ClassNotFoundException

O código é o seguinte:

URL jarfile;
PrintRules printRules = null;
try {
jarfile = new URL("jar:file://c:/jboss-4.0.4.GA/server/default/lib/xxx.jar!/");
URLClassLoader urlClassLoader = URLClassLoader.newInstance(new URL[] { jarfile });
				
Class drvCls = Class.forName("br.com.printrules.PrintRules", false, urlClassLoader);
printRules = (PrintRules)drvCls.newInstance();
} catch (Exception e) {
e.printStackTrace();
}

Alguém saberia me dizer se o caminho para criar a URL esta correto?
E a maneira de carregar a classe?

Desde já agradeço a ajuda.
Diogo

4 Respostas

ViniGodoy

Ao invés de class.forName use o método findClass do seu classloader para obter a instância desejada do objeto Class.

Depois, use a reflexão para criar uma nova instância normalmente.

D

Como estou utilizando o urlClassLoader a classe que herdo de ClassLoader é loadClass(), que por sua vez chama o findClass().
Mas já testei essa opção e também da ClassNotFoundException.

Como funciona o uso da reflexão. Tem algum exemplo?

ViniGodoy

Esse newInstance() que você usou chamou é um exemplo de reflexão.

D

Ainda não consegui fazer funcionar :frowning:

Se alguém puder me ajudar…

Criado 25 de janeiro de 2007
Ultima resposta 25 de jan. de 2007
Respostas 4
Participantes 2