Bom dia a todos,
Gostaria de saber como faço para adicionar um .class externo ao meu projeto em tempo de execução. Já li que isso deve ser feito adicionando esse .class ao classpath do projeto, inclusive encontrei aqui um código que faz isso, porém quando tento acessar a classe adicionada usando o Class.forName() dá um exception de classe não encontrada.
Segue o código que inclui a classe ao classpath da aplicação:
/**
Aqui eu passo o arquivo que representa o .class
Ex: /home/laudenpower/MinhaClasse.class
*/
public void addURL(final File directory) {
try {
final URL url = directory.toURI().toURL();
final Method method = this.getMethod();
final URLClassLoader sysloader = (URLClassLoader) this.getClass().getClassLoader();
method.invoke(sysloader, new Object[]{url});
} catch (final Exception e) {
e.printStackTrace();
}
}
private Method getMethod() {
final Class<URLClassLoader> sysclass = URLClassLoader.class;
Method method = null;
try {
method = sysclass.getDeclaredMethod("addURL", new Class[]{URL.class});
method.setAccessible(true);
return method;
} catch (final Exception e) {
e.printStackTrace();
return null;
}
}
O meu objetivo é adicionar classes em tempo de execução para que usando reflection eu possa saber quais atributos e métodos que essas classes possuem.
Desde já agradeço a atenção de todos e aguardo retorno.