2

次の2つのクラスがあるとします。

public class MyClass {
    public String getDescription() {
        return "MyClass";
    }
}

public class MyClassLoader {
    public static void main (String[] argv) throws ClassNotFoundException {
        Class.forName("MyClass");
        System.out.println("MyClass class was successfully loaded");
    }
}

これらのクラスの両方がデフォルトのパッケージに含まれている場合、それは正常に実行され、クラスがロードされ、世界は美しいです。(クラスを削除するMyClassClassNotFoundException、予想どおり、が表示されます。

ただし、両方がパッケージに含まれている場合(たとえば、Eclipseのパッケージである場合)、

package myClassTestPackage;

両方で宣言されているので、ClassNotFoundException実行しようとするとが表示されます。

この問題の原因とその修正方法を教えてください。これは、はるかに大きなプログラムで発生しているエラーを再現することができた最も簡単な方法です。

4

1 に答える 1

6

これは、Class.forName()メソッドが完全修飾クラス名をパラメーターとして受け取るためです。

Parameters:
    className - the fully qualified name of the desired class.

それで:

Class.forName("myClassTestPackage.MyClass");
于 2012-11-10T23:02:53.627 に答える