デバッグ構成で指定されている最上位のデバッグ クラスはMyDebugClass
. のさらに下で、同じパッケージにあるクラスmain
のインスタンスを起動しようとしますが、コンストラクター呼び出し行で「ソースが見つかりません」というエラーが発生します。プロジェクトは正常にコンパイルされ、.class ファイルは実際にターゲット ディレクトリ (.class の .class と同じ場所) にあります。ProblemClass
MyDebugClass
MyDebugClass
デバッグメインが含まれていない同じパッケージが含まれているように、クラスパスに何か奇妙なことがあったのではないかと思ったので、同じディレクトリにテストクラスを作成し、そのインスタンスを呼び出そうとしましたが、うまくいきました。それは問題ではありません。
MyDebugClass.main
問題をデバッグするために、次のコードも追加しました。
ClassLoader loader = ProblemClass.class.getClassLoader();
Class probCls = loader.loadClass("mypackage.ProblemClass");
//here below is where it errors out
probCls.newInstance();
この種のクラス読み込みの問題を引き起こしている可能性があるのは何ですか? クラスパスにはたくさんの jar ファイルがあり、そのうちの 1 つに同じクラス修飾子が含まれていて、クラス ローダーがデバッグ ビルド パスで指定されたターゲット ディレクトリではなく、そこからそれを取得しようとしている可能性がありますか? クラス ローダーがクラスをロードしようとしている場所 (.class ファイルや jar を探しているファイル システム パスなど) を見つけるにはどうすればよいですか?