Olá, pessoal.
Será que alguém pode me ajudar?
Preciso criar uma espécie de hot deploy e estou realizando alguns testes.
Eu consigo carregar a classe q está em um jar via classloader. Essa class implementa um interface que chamei de inter.
O problema é que após carregada a classe (carrego-a como Object), não consigo fazer cast dela para a Inter.
Existe alguma forma de fazer o cast?
Segue os códigos
Loader que funciona:
public static void main(String[] args) {
try {
while(true){
Thread.sleep(5000);
URL url = new URL("file:///c:/Dummy.jar");
ClassLoader cl = new URLClassLoader(new URL[]{url},null);
Object object= cl.loadClass("Dummy").newInstance();
Method m=object.getClass().getMethod("getString", null);
System.out.println(m.invoke(object, null));
System.out.println(object);
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Classe que carrego
public class Dummy implements Inter{
public Dummy() {
System.out.println("Dummy...1");
}
public String getString(){
return "String123";
}
}
Interface
public interface Inter {
String getString();
}
Só recapitulando, a ideia é converter o dummy carregado para Inter
Obrigado!