URLClassLoaderを使用して、jarアーカイブから特定のディレクトリのクラスをロードしたいと思います。
プロジェクト構成は以下のとおりです。
/
application.jar
/lib/
mysql.jar
log4j.jar
...
/myClasses/
class1.class
class2.class
...
jarには次のマニフェストがあります。
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.7.0_07-b10 (Oracle Corporation)
Main-Class: de.application.start
Class-Path: lib/mysql.jar lib/log4j.jar lib/....jar
私が現在行っていることは、次のように、内のすべてのファイルを反復処理し、/myClasses/
その特定のクラス(すべて同じパッケージを持っている)をロードしようとしています。
File classDir = new File("/path/to/my/root/folder/myClasses/");
URL[] url = { classdir.toURI().toURL() };
ClassLoader loader = new URLClassLoader(url);
for (File file : classDir.listFiles()) {
String filename = StringUtil.getFilenameWithoutExtension(file.getName());
loader.loadClass("de.myClasses." + filename).getConstructor().newInstance();
しかし、ファイルが明らかに存在していても、私は常にjava.lang.ClassNotFoundException: de.myClasses.class1
エラーが発生します。私は何が間違っているのですか?