7

ですから、これはしばらくの間私の心にあったものです。どのようにしてプログラムを取得し、それを「自動更新」にすることができますか? したがって、Myserver.com/myProg/updates.xml (またはその他のリソース) をチェックし、バージョン番号が同じであることを確認する外部シェルとしましょう。それを行ったら、プログラムの更新をどのように処理しますか?

私のプログラムが単純なメインのみのクラスであり、唯一の出力が次のとおりであるとしましょう。

System.out.println("Hello World"); 更新すると、 System.out.println("Hello Java"); になります。

実行時にこの変更を行うにはどうすればよいですか?

注: JNLP はこれには適用できません。これは、拡張したくない署名の問題のためです。

4

2 に答える 2

9

2 つの「アプリケーション」が必要です。

  1. 更新をチェックしてメイン アプリケーションを実行する最小限のブートストラップ アプリケーション。
  2. 主なアプリケーション。

ユーザーは常にブートストラップ アプリケーションを起動し、メイン アプリケーションは起動しません (実際、ユーザーはブートストラップ アプリケーションについて知りません)。これは、私が見た中で最も一般的なパターンです。

実行時に自動更新を行いたい場合は、言及されている javabeats のように OSGI を使用する必要があります。ただし、本当に必要な場合にのみ、このパスを使用してください。私は OSGI を使ったことはありませんが、それが自明ではないことは想像できます。

編集

具体的な例はありませんが、想像することはできます

  1. ブートストラップは、いくつかの jar ファイルと構成ファイルをダウンロードします
  2. 構成ファイルの 1 つには、クラスパスに必要なファイルが含まれています (これは、特定のフォルダー内にあるすべての jar ファイルを選択する場合、アプリによって自動的に行われます)。
  3. 前のリストを使用して、新しいクラスローダーを作成し (ここの例を参照)、jar ファイルをクラスパスに追加します。
  4. 新しいクラスローダーでアプリケーションのメイン クラスを実行します。

申し訳ありませんが、コードを自分で書かない限り、より詳細な回答を提供することはできませんが、その料金を請求します:)。

于 2012-11-12T19:06:43.833 に答える
2

JNLP が除外された場合、OSGIを使用したソリューションだけがそれを達成できると思います。そうしないと、可能な限り単純な設計であっても、現在のプログラムのバージョンを管理およびダウンロードするために別のプログラムが必要になります。

于 2012-11-12T19:03:56.197 に答える