-1

私が XCode と iOS で作業していたとき、plist を読み取ってアプリケーションの現在のバージョンを確認する簡単な方法がありました。

Javaでこれを行う同様の方法はありますか?

4

3 に答える 3

4

XCode は、アプリケーションと共に配布されるリソース ファイルにそのバージョン値を格納します。Java では、JAR/WAR/EAR アーカイブ内にパックされたマニフェスト ファイルに相当します。

MANIFEST.MFマニフェスト ファイルは、多くのツールで認識されるいくつかの標準的なキーと値のペアを格納するという名前の単なるメタデータ テキスト ファイルでMETA-INFあり、Java アーカイブ内で名前が付けられた特別なフォルダー内にパッケージ化されています。

独自の JAR のマニフェスト ファイルを取得するには、この質問からいくつかの手がかりが得られます。独自のManifestインスタンスを作成したら、次のオプションのいずれかを使用してそのバージョン値を取得します。

この方法で仕様バージョンを取得します。

Manifest mf = .... // get the manifest file
String specVersion = mf.getAttribute("Specification-Version");

この方法で実装バージョンを取得します。

Manifest mf = .... // get the manifest file
String specVersion = mf.getAttribute("Implementation-Version");

JAR マニフェストの詳細については、こちらを参照してください。

編集:

これらのプロパティのいずれかの値を取得している場合は、それらがファイルnullで構成されていないことを意味しMANIGEST.MFます。これは簡単に確認できます。JAR ファイルを解凍し (JAR ファイルは拡張子が異なる単なる ZIP ファイルです)、META-INFフォルダーに移動してファイルを見つけMANIFEST.MFます。これはテキスト ファイルであるため、その内容をコンソールに出力できますSpecification-VersionImplementation-Versionそこに属性が定義されていて、まだnull値を取得している場合は、別の JAR からマニフェスト ファイルをロードしている可能性があります。

記録のために:

マニフェスト ファイルでその属性を取得するには、そのようにビルド ツールを構成する必要があります。Maven はそれを自動的に行います (カスタマイズは可能です)。Ant では特定のAnt Taskを使用する必要があり、Eclipse ではそのドキュメントを参照する必要があります(他の IDE と同じ)。

于 2012-09-04T09:18:32.980 に答える
0

Alonso が言うように、Java では、コンパイラによってビルド バージョンがコードに自動的に割り当てられることはありません。Java は、ant や maven など、コンパイラが実行されるビルド ツールに任せます。多くの場合、アプリがマニフェスト ファイルを使用しておらず、代わりに my_app_1.2.3.jar などのバージョン番号のサフィックスを使用している場合は、次のようにして jar 名を取得できます。

Class.getProtectionDomain().getCodeSource().getLocation()
于 2012-09-04T09:23:29.420 に答える
0

GUI があり、主な目的1が「更新」である場合は、 Java Web Startを使用してデプロイします。

ユーザーにバージョンを表示するには、アプリの各 Jar のマニフェストにバージョン番号を保存し、実行時にImplementation-Versionsを表示します。JTable

  1. 余談ですが、より良い答えを得るには、「やろうとしていること」を脇に置き、代わりに達成しようとしている「機能」に名前を付けてください。後者は、ユーザーに提供したいアプリケーション機能として表現できます。「プラグインで拡張可能」、「24 か月間の無料自動アップグレード」、「より白く、より明るく、より多くの泡」のようなものかもしれません..
于 2012-09-04T09:44:55.197 に答える