12

作業中のJava/Swingアプリケーションに自己更新機能を追加する方法を見つけようとしています。

基本的に、インストールされたユーザーが変更されたときに再デプロイするための追加機能を備えたjarファイルがたくさんあります。複雑なことは何もありません。新しいバージョンがリリースされているかどうかを確認し、HTTP経由でダウンロードしてから、オプションでユーザーにアプリの再起動を提案します。

私はwebstartを調べましたが、うまくいく可能性があります。しかし、この特定のアプリは、クラスローディングとGCメモリ設定でいくつかのファンキーなことを行いますが、それらはWebstartでサポートされているようには見えないか、少なくとも問題を複雑にします。(これはJMeterの微調整されたビルドです)

また、このプラグインハンドラーhttp://swing-fx.blogspot.com/2008/06/add-auto-update-and-plugins-to-your.htmlを追加する道を進みましたが、これは非常にアルファ版です。アルファ版で発生する通常のバグを使いすぎてしまいます。

4

6 に答える 6

6

私はまったく同じことをしました。しかし、それはずっと前のことなので、今日はおそらくより優れたツールがあります。

私が必要だとわかったのはローダーでした。ローダーのメイン プログラムのクラスパスにアプリ jar がありませんでした。必要に応じて最初に更新をダウンロードし、次にクラスパスにアプリ jar を含むカスタム クラスローダーを作成し、アプリケーション メイン クラスのメイン メソッドを呼び出しました。それほど複雑ではありません。IIRC jar が既にクラスパスにある場合、Windows で jar を上書きできないため、これを行う必要がありました。

お役に立てれば。

于 2008-10-16T06:30:25.523 に答える
4

6 年前に自己更新機能を備えたスイング アプリがありました。あなたが提案したように、

1)http経由で最新のjarファイルをダウンロードし、
2)それらをフォルダーにコピーしました。
3) swing アプリは .BAT ファイルを使用して起動されるため、ユーザーが「はい」と言った後、swing アプリをシャットダウンし、更新フォルダー内のファイルを探します。はいの場合は、別の .BAT ファイルを起動して、新しい JAR を必要なディレクトリにコピーします。
4) その後、swing アプリを再起動します。

于 2008-10-16T06:55:01.403 に答える
4

更新、プラグイン、懸念事項の分離などは、まさにOSGiに関するものです。これを参照してください。無料になることはありません (特に、現在クラスローディングのトリックを使用している場合は、最初の学習曲線が急峻です) 。組織など)

これらの実装では、autoupdater が利用可能です。モジュールを正しく記述すれば、再起動せずに実行時に更新できます。

于 2008-10-16T18:04:11.210 に答える
1

Java Web Start は適切な選択です。GC のものは重要ではありません。クラスローディングが問題になる可能性があります。しかし、ユーザーから信頼されると、AllPermisions を付与でき、カスタム クラスローディングを実行できるようになります。クラスローディングでファンキーなものを再考するのは良いことかもしれません。それは本当に必要ですか?または、NetBeans を見てください。自動更新のインスピレーションが見つかるはずです。

于 2008-10-16T20:46:00.370 に答える
1

Java WebStart をもう一度確認するか、少なくとも問題を引き起こすと思われる「ファンキーなクラスローディング」について詳しく説明する必要があると思います (ここで提案されているソリューションでも問題が発生する可能性があるため)。

IIRC では、Java WebStart ( http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#resources )を使用してコマンド ライン パラメータを設定できます。

于 2008-10-16T09:05:56.163 に答える
1

私は間違いなく最初に Webstart を試してみます。初期の Eclipse RCP アプリでさえ、Webstart を使用して多くの成功を収めてきました。おそらく、OSGI フレームワーク (Eclipse Equinox) を使用した場合ほど、クラスローディングの問題が発生することはありません。

クラスローディングのアプローチについての質問で、もう少し詳しく教えていただけますか?

GC およびその他の VM 設定について: これらは、Webstart がアプリを起動するために使用する JNLP (Java Network Launching Protocol) ファイルで簡単に指定できます。

于 2008-10-16T11:45:17.700 に答える