Bom dia pessoal,
Estou tentando implementar no meu sistema uma forma dinâmica de carregar determinadas classes, para que eu possa manutenir estas sem ter que redistribuir a aplicação, entretanto o classLoader não consegue encontrar a minha classe.
Estou usando o seguinte código:
public static IParser gerarParser(String caminho,String nome){
ClassLoader cload = null;
try{
File arq = new File(caminho);
URL x = arq.toURL();
URL[] urls= new URL[1];
urls[0]=x;
cload = new URLClassLoader(urls);
}catch(Exception e){
e.printStackTrace();
}
Class cl = null;
IParser par = null;
try{
cl = Class.forName(nome,true,cload);
}catch(ClassNotFoundException e){
e.printStackTrace();
}
// Instancio a classe
try{
par = (IParser) cl.newInstance();
}catch(IllegalAccessException e){
e.printStackTrace();
}catch(InstantiationException e){
e.printStackTrace();
}
return par;
}
Sendo que o primeiro argumento é o caminho do arquivo .class e o segundo o nome da classe, teoricamente o nome completamente qualificado dela.
Mas sempre gera um ClassNotFoundException, alguem tem alguma idéia de onde estou errando?
Este código pertence a uma classe utilitária que fabrica esta classe que quero dar manutenção.
PS: Parser é a classe real e IParser é a Interface que utilizarei para chamar os métodos da classe concreta.
Grato pela atenção,
Att.Paulo.
EDIT-- Estava sobrecarregando o ClassLoader sem necessidade , utilizei o URLClassLoader e todos os meus problemas foram resolvidos.