You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java反射调用类报java.lang.ClassNotFoundException,如何获取类全限定名

反射调用类方法报ClassNotFoundException的解决方案

Class.forName()方法传入的参数必须是类的全限定名(包名+类名),你当前仅传入类名Algorithms,缺少包路径,因此触发类找不到异常。你提到目标类和当前代码同属于lab01包,可通过以下方案解决:

方案1:直接传入完整全限定名

调用方法时直接拼接包名即可,示例代码:

try {
    testAlgorithm("lab01.Algorithms", "linear", 50);      
} catch (Exception e) {
    e.printStackTrace();
}

方案2:动态获取全限定名(避免硬编码)

不需要通过匿名内部类的复杂方式获取,直接用类对象的getName()方法即可拿到字符串类型的全限定名,这种方式后续包名变更也会自动同步,不会出现硬编码错误:

try {
    testAlgorithm(Algorithms.class.getName(), "linear", 50);      
} catch (Exception e) {
    e.printStackTrace();
}

额外注意事项

  • 确保Algorithms类存在public无参构造方法,否则myClass.newInstance()会抛出实例化异常;Java 9+版本推荐替换为myClass.getDeclaredConstructor().newInstance(),兼容性更强
  • 确保要调用的linear方法是public修饰,且仅有一个long类型的入参,否则getMethod会找不到对应方法

内容的提问来源于stack exchange,提问作者biomaticstudios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:36:03