Всякий раз, когда динамически загружается класс с использованием URLClassLoader, я получаю NoSuchMethodException при попытке выполнить метод с пользовательским типом данных в качестве параметра. Он находит методы со стандартными типами, такими как String и int, но не с пользовательским типом.
Загруженный класс:
public void execute(ProcessingData data){
System.out.println("entered execute(ProcessingData data");
Класс вызова:
URLClassLoader loader =
new URLClassLoader(new URL[] {new File(alg.getPath()).toURI().toURL()}, AlgorithmLoader.class.getClassLoader());
// Load class into memory
Class<?> algClass = Class.forName(className, true, loader);
logger.logInfo("Loaded class. Attempting to invoke execute(data) on aircraft: "+ data.getFlightData().getAircraftId());
Method processMethod = null;
try {
Object obj = algClass.newInstance();
processMethod = algClass.getDeclaredMethod("execute", ProcessingData.class);
processMethod.invoke(obj, data);
} catch (final NoSuchMethodException exception) {
logger.logInfo(exception.toString());
}
loader.close();