これは、クラスを動的にロードする際の一般的なアプローチです。
try {
File file = new File(JAR_FILE);
String classToLoad = "com.mycompany.MyClass";
URL jarUrl = new URL("jar", "","file:" + file.getAbsolutePath()+"!/");
URLClassLoader loader = new URLClassLoader(new URL[] {jarUrl}, Thread.currentThread().getContextClassLoader());
Class c = loader.loadClass(classToLoad);
} catch (Exception e) {
e.printStackTrace();
}
ただし、次のアプローチが必要です。
- ファイルを作成する必要はありません (処理しようとしている jar は取得時にバイト配列 [] であるため)
- または、byte[] 配列から一時ファイルを作成する必要はありません (AppEngine のように、私が使用しているプラットフォームでは一時ファイルの作成が許可されていません)。