ネットワークからの JAR ファイルの起動に関して小さな問題があります。私のシナリオはこれです:
私のアプリでサーバー上の共有ネットワークディレクトリ。クライアントは、このネットワーク上の場所から JAR ファイルを実行しています。サーバーへの接続が失われない限り、すべてが正常に機能します。
アプリケーション (JAR) がクライアント マシンで実行されているときに接続が切断されると、これまで使用されたことのないクラスが使用され、NoClassDefFoundError 例外がスローされます。
JVM は必要に応じて実行時にクラスをロードすることを知っています。だから私の質問は:
アプリを起動する前に JVM に、JAR 全体 (JAR 内のすべてのクラス) をメモリにロードするように指示できますか? Class.for("...") やその他の方法を使用して 1 つのクラスをロードすることはできません。すべてのクラスについて「わからない」ためです。
JVMにJARファイルをキャッシュするように指示できますか。ローカルハードドライブの一時フォルダーに移動しますか? 自分のアプリをネットワークからコピーして起動する他のアプリ (JAR) は必要ありません。
JAR を共有ネットワークの場所に置きたい場合、他に選択肢はありますか? :)