私の目的は、情報を観察したいクラスの名前をコマンドラインに読み込むことです。私がランタイムの前にクラス名を知っているとき、私は問題はありません。私が管理できないように見えるのは、文字列入力に基づいてクラスオブジェクトを作成する方法です。Java Reflection、Class Objects
public class Tester {
static void methodInfo2(Object obj) throws ClassNotFoundException {
//some stuff
System.out.print("Test!");
}
public static void main (String args[]) throws ClassNotFoundException{
String className = args[0];
System.out.println("Class: "+className);
//myclass2 mc = new myclass2();
//Class c = mc.getClass();
Class argClass = Class.forName(className);
try {
methodInfo2(argClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
メインメソッドのコメントアウトされた2行は、コンパイルする前に私がクラス名を知っていたときの私の過去の出来事を示しています。次のコメントアウトされた行は、私が考えるべきことを示していますが、ClassNotFoundExceptionを受け取ります。クラスは確かに存在するので、私は何の問題があるのかよく分かりません。
お返事ありがとうございます!後でこのトピックを見つけた人には、私がelcipseのパッケージ内に自分自身を定義したかったクラスが問題でした。修正は、パッケージ名をクラス名の先頭に追加することでした: "packageName.myclass2" – Nibirue