У меня есть класс Java, имя которого хранится в базе данных, который я хочу загрузить во время выполнения.Я использую отражение, чтобы попытаться сделать это, но текущий код вызывает исключение InvocationTargetException:
String classname = "my.test.path.Class";
String details = "Some text";
Integer id = 123;
Class<?> cls = Class.forName(classname);
Constructor<?> cons = cls.getConstructors();
for (Constructor<?> con : cons) {
System.out.println(con.toString()); // Does find the constructor
}
Constructor<?> constructor = cls.getConstructor(Integer.class, String.class);
ClassInterface object = (ClassInterface) constructor.newInstance(id, details);
Выходные данные System.out.println:
public my.test.path.Class(java.lang.Integer, java.lang.String) throws java.sql.SQLException,java.lang.ClassNotFoundException
Исключение составляетследующим образом:
java.lang.reflect.InvocationTargetException
at test.path.Main...
Это класс, в котором приведен код выше, а не вызываемый конструктор.