プログラムがjarから実行されるときの動的ロードの問題
-
05-07-2019 - |
質問
特定のインターフェイスに準拠するJavaクラスを介して拡張可能なアプリケーションがあります。 コマンドラインクラスからプログラムを実行すると、次を使用してアドオンクラスをインスタンス化できます。
Class.forName("myAddon").newInstance();
ただし、アプリケーションをjar(メインクラスを正しく設定)すると、クラスが見つからないという例外が発生します。誰もがここで何が起こっているのかについていくつかの光を当てることができますか?
TIA、 アダム
解決
次のように検索パスを現在のディレクトリに指定して、URLClassLoaderを使用してこれを機能させることができました。
URLClassLoader cl = new URLClassLoader(new URL[] {new File(".").toURI().toURL()});
ご協力ありがとうございます
アダム
他のヒント
探しているクラスはクラスパス上にありません。ディレクトリにある場合
i.e。 MyClass.class MyJar.jar
する必要があります:
java -classpath . -jar MyJar.jar
しかし、本当に質問に答えるためにはもっと情報が必要です。 jarマニフェストで設定されるメインクラスは何ですか?あなたのクラスパスは何ですか?ロードするクラスをどのように指定しますか?
所属していません StackOverflow