0

アプリケーション用の単純な自動アップデーターを構築しようとしています。現在、リモート バージョンに対してローカル アプリケーション バージョンをチェックしています。新しいバージョンがある場合は、updater.jar を起動したいと思います。これは基本的に、古いアプリケーションをダウンロードして置き換えます。

私の問題は、新しいバージョンがある場合、updater.jar を起動できないように見えることです。

私が現在使用しているコードは次のとおりです。

Runtime runtime = Runtime.getRuntime();
try {
    Process proc = runtime.exec("java -jar updater.jar");
} catch (IOException ex) {
    Logger.getLogger(Splash.class.getName()).log(Level.SEVERE, null, ex);
}
System.exit(0);

アプリケーションは終了しますが、updater.jar は起動されません。

何か案は?

4

3 に答える 3

0

コマンドで updater.jar へのパスを指定する必要があるかもしれませんjava -jar

于 2013-07-17T13:54:50.970 に答える
0

親プロセスが終了すると、子プロセスが終了する可能性があります。

プロセスを起動するときは、通常、次のことを行う必要があります。

  1. 子プロセスから stdout/stderr を消費します。これを行わないと、子プロセスは出力が消費されるのを待ってブロックする可能性があります。別のスレッドで使用する必要があります。詳細については、この回答を参照してください
  2. Process.waitFor()子プロセスから終了コードをキャプチャするために使用します

アップデーターを生成し、ダウンロードを実行させてから、親プロセスを終了したいようです。より複雑なものは、プラットフォームに依存する可能性があります (たとえば、バックグラウンド プロセスの生成と所有権の剥奪)。

于 2013-07-17T13:39:14.703 に答える
0

jre1.2以降、 URLClassLoaderを使用することをお勧めします

実行時にjarファイルをロードする方法を参照してください

于 2013-07-17T14:01:34.533 に答える