Javaでの動的クラスローディングの経験を積もうとしています。したがって、コメントやヘルプは大歓迎です。ユーザーがファイルを選択して、そのファイルに対していくつかのアクションを実行できるようにするプログラムがあります。アクションは「コマンド」であり、それらは私がロードしようとしているクラスです。
それが機能する方法は次のとおりです。ユーザーが.classファイルを目的のフォルダーに配置し、私のプログラムがフォルダー内のファイルをチェックし、.classファイルにクラスがある場合はそれをロードします。
私はそれをしましたが、私が望んでいたようではありませんでした。今のところ、それは私のプログラムでコンパイルされたクラスでのみ機能します。しかし、私が欲しいのは、クラスを含む任意の.classファイルをフォルダーに入れて、プログラムがそれをロードできることです。それは今のところ私のコードです:
for (int i = 0; i < fileList.length; i++) {
if (fileList[i].endsWith(".class")) {
/////MY FIRT TRY/////ClassLoader myClassLoader = ClassLoader.getSystemClassLoader();
ClassLoader classLoader = FileMod.class.getClassLoader();
// Define a class to be loaded.
String classNameToBeLoaded = fileList[i].replace(".class", "");
// Load the class
try {
/////MY FIRST TRY/////Class myClass = myClassLoader.loadClass(classNameToBeLoaded);
//if the class exists in the file
Class aClass = classLoader.loadClass(classNameToBeLoaded);
classList.add(aClass);
System.out.println("CLASS FOUND : " + classNameToBeLoaded + aClass.getSuperclass());
} catch (ClassNotFoundException e) {
System.out.println("CLASS NOT FOUND : " + classNameToBeLoaded);
continue;
}
}
}
ご覧のとおり、私は2つの方法を試しましたが、最初の方法は現在コメント中です。私がしていることは、フォルダ内のすべてのファイルをチェックし、それが.classファイルであるかどうかをチェックすることです。そうであれば、クラスがある場合はそれをロードしようとします。2つclassLoaders
は「知っている」ファイルしかロードできないと思いますが、外部クラスをロードするにはどうすればよいでしょうか。