抛出 ClassNotFoundException

时间:2021-06-05 13:50:06

标签: java class

我的项目分配程序有问题,抛出多个 Tesla Apple Inc. Sony Sony Sony Sony 。我认为问题源于 ClassNotFoundException 类,它是游戏中所有项目的抽象超类。每个项目都必须受类限制,因此在构造函数中,字符串 BaseGear 作为参数提供,然后我尝试将其转换为类名并添加到名为 restrict 的列表中。提供的字符串有时可能只包含一个类的名称,有时只包含两个类的名称,这就是我必须拆分字符串的原因。

classRestrictions

知道如何解决这个问题吗?

try {
    if (restrict.contains(",")) {
        String[] tmp = restrict.split(",");
        for (String s : tmp) {
             Class classType = Class.forName(s);
             classRestrictions.add(classType);
        }
    } else {
        Class classType = Class.forName(restrict);
        classRestrictions.add(classType);
    }
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

1 个答案:

答案 0 :(得分:1)

方法 Class.forName(String className) 需要一个完全限定的名称,这意味着与包。请参阅 JavaDoc:

<块引用>

className - 所需类的完全限定名称。

注意堆栈跟踪说 "com.dt180g.project.gear.Weapon" - 我注意到字符串中没有包含包。此要求的目的是避免类歧义,因为不同包中可能存在同名类。

解决方法:需要传递包含完整包名的String,例如传递String querySelector

相关问题