実行時に JAR ファイルを動的にロードするにはどうすればいいですか? 質問する

実行時に JAR ファイルを動的にロードするにはどうすればいいですか? 質問する

Java でこれを行うのはなぜ難しいのでしょうか。何らかのモジュール システムを使用する場合は、JAR ファイルを動的にロードできる必要があります。独自の を作成することでこれを行う方法があると聞きましたClassLoaderが、(少なくとも私にとっては) JAR ファイルを引数としてメソッドを呼び出すのと同じくらい簡単なはずの作業に対して、それは大変な作業です。

これを実行する簡単なコードの提案はありますか?

ベストアンサー1

難しい理由はセキュリティです。クラスローダーは不変であることが前提です。実行時にクラスを勝手に追加できないようにする必要があります。システム クラスローダーでそれが機能することに私は非常に驚いています。独自の子クラスローダーを作成する方法は次のとおりです。

URLClassLoader child = new URLClassLoader(
        new URL[] {myJar.toURI().toURL()},
        this.getClass().getClassLoader()
);
Class classToLoad = Class.forName("com.MyClass", true, child);
Method method = classToLoad.getDeclaredMethod("myMethod");
Object instance = classToLoad.newInstance();
Object result = method.invoke(instance);

痛いけど、それが現実。

おすすめ記事