2017-10-06 7 views
3

クラスパスで使用されている現在のJavaメールapi jarのバージョンが必要です。それが私たちの生産的な環境ではnullを返しますので、現在のJavaメールAPIのバージョンをプログラムで取得する方法はありますか?

または

    • カスタムクラスローダ(jarsafe)の我々はすべてのjarファイルを抽出するので、私は、

      IMAPStore.class.getPackage().getImplementaionVersion() 
      

      を使用することはできません(メールAPIやその他のサードパーティのjarファイル/ライブラリを含む)をリリース配備製品に追加し、それらを単一のjarファイルに入れてマニフェスト情報を失います。

    mail apiは、などの方法をサポートしていますか?System.getPropertyなど?

  • +1

    どのようなアプリケーション(webapp、スタンドアロン..)で、どのようにビルドするのですか? – Berger

    +0

    これはスタンドアロンのJavaアプリケーションであり、独自のjarファイルと他のライブラリを持っていますが、ライブラリは最初に抽出され、クラスパス内の単一のjarファイルに入れられます – benchpresser

    答えて

    1

    他に何もしていないのであれば、クラスパスからgrep mail api jar nameになるかもしれません。バージョンが含まれている可能性があります。

    しかし、すべてのjarファイルを単一のjarファイルにシェーディングしていると、メールAPIの特定のjarファイルがないため、クラスパス情報からこの情報も失われてしまいます。

    getPackage().getImplementationVersion() 
    

    、プロパティファイル/そのシェーディングexludesマニフェストを使用し、したがって、nullを返すことを推測します。

    おそらく、影付きのjarを作成するプロセスを確認できます。たとえば、後で読むことができるプロパティファイルなどのバージョンをコピーするステップを追加することができます。

    既に「デプロイされている」システムで、上記の実装が不可能な場合は、プログラムソリューションのオプションはごくわずかです。

    関連する問題