gpt4 book ai didi

java - 使用自定义数据类型的方法的 NoSuchMethodException

转载 作者:行者123 更新时间:2023-12-01 17:29:37 28 4
gpt4 key购买 nike

每当使用 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();

最佳答案

您正在调用没有任何对象的方法( invoke 的空参数)。这意味着该方法应该是静态的。

如果您的方法不是静态的,那么您首先需要创建 algClass 类型的实例使用getConstructors()并将该对象传递给 invoke 的第一个参数打电话。

关于java - 使用自定义数据类型的方法的 NoSuchMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61147352/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com