クライアントサーバーアプリケーションを構築しています。実行時に、クライアント アプリケーションはサーバー アプリケーションから jar ファイルをロードして保存します。クライアントとサーバー アプリケーションの両方を jar ファイルとして実行します。このダウンロードした jar ファイルに含まれるクラスをロードしたいと思います。
たとえば、インターフェイス A と A を実装するクラス B があります。クライアント アプリケーションは、クラス B、その名前、さらにはその存在について知りません。クライアント アプリケーションの起動後、クライアント アプリケーションは次のコンテンツを含む jar ファイルを含む jar ファイルをダウンロードします: server/package/B.class ここで、server と package はフォルダーです。
クライアント アプリケーションは、次のコードを使用して、ダウンロードした jar ファイルからこのクラス B をロードする必要があります。
URL downloadURL = downloadFolder.toURI().toURL();
URL[] downloadURLs = new URL[] { ruleSetFolderURL };
URLClassLoader loader =
new URLClassLoader(downloadURLs);
Class tmp = loadClass(server.package.B);
しかし、その後ClassNotFoundException
、最後の行に a が表示されます。最初にjarファイルを抽出する必要がありますか? jar ファイルのフォルダー構造は、サーバー アプリケーションの bin ディレクトリのフォルダー構造に似ています。