デスクトップディレクトリにあるコンパイル済みクラスファイルからクラスオブジェクトをロードしようとしています。クラスパスまたはパッケージに関係なく外部クラスファイルをロードする
URLClassLoader
を使用して、コンパイル済みファイルTheClassToLoad.class
からクラスのインスタンスを取得する私のプログラムのmainに2つの引数を渡しています。
私はクラスローディングプログラムのメインで、持っている:
String classFile_FilePath = args[1];
String className = args[2];
URL classUrl = new URL(classFile_FilePath);
URLClassLoader ucl = new URLClassLoader(new URL[]{classUrl});
(args[0] is for something unrelated)
Me:ClassLoadingProgramRootDir Me$ java com.company.Main argZero file:///Users/Me/Desktop/ TheClassToLoad.class
私が発生した例外を見つけます:
スレッド「main」の例外java.la ng.ClassNotFoundException:TheClassToLoad.class
ので、Desktop/
内のファイルTheClassToLoad.class
はまだありURLClassLoader
は私が状況をデバッグする必要がある詳細を提供せずに例外が発生します。
私はJavaを使い慣れていないし、com.company.Class
のようなクラスパスは、パッケージのディレクトリ構造に基づいてクラスの真のクラス名を参照する必要があることに注意してください。しかし、この場合、私は単にURLClassLoader
が、マシン上のどこかに座っている任意のコンパイルされたクラスファイルのClassオブジェクトのインスタンスを私に与えることを要求しています。
クラスに 'package'ステートメントがある場合は、ロードして使用するときにそのステートメントを尊重する必要があります。 – bmargulies