2017-09-17 6 views
0

具体的には、Eclipseバージョン番号(4.7.0)を見つけるためにコードを記述する必要があります。私はファイル(.eclipseproductまたはabout.mappings)でそれを見ることができず、私はAPIコールを行う必要があります。Eclipse内の特定のプラグインのバージョン番号を確認します。

私はプラグインorg.eclipse.platformのバージョン番号をJavaプログラムによって知ることができるのだろうかと思っていました。

+0

なぜあなたは.eclipseproductからそれを読むことができませんか?プラグインとしてEclipse内にいるか、実行中のインスタンスにアタッチしていますか? –

+0

このコードはEclipseプラグインに入っていますか、それとも別のJavaプログラムですか? –

+0

こんにちはgreg-449プラグインではなく別のJavaプログラムを想定してみましょう。 PerDigre .eclipseproductから読み込むことは、一度私がEclipse版を取得したら、私にとって最も効果的な解決策にはなりません。 – Amit740

答えて

0

あなたがEclipse内でランタイムワークベンチとしていると仮定して、システムプロパティから取得するのが最も簡単な方法だと思います。

System.getProperty("eclipse.buildId") 

Eclipseコンテキスト内にいない場合は、「.eclipseproduct」などのインストールファイルか、デバッガを使用します。

+0

Sop(System.getProperty( "eclipse.buildId")))はnullを返します。 – Amit740

+0

これはEclipseのコンテキスト、つまりruntime-workbenchで設定されています。私にとっては「4.7.0.I20170612-0950」と読みます。 –

+0

eclipe.iniファイルにeclipse.buildId = 4.7.4.7.0.I20170612-0950がありますか? – Amit740

0

Platform::getBundleを使用して、指定されたシンボリック名のバンドル(OSGiランタイムでのプラグインの表現)を取得できます。バンドルを取得したら、そのバージョンを問い合わせることができます。例:

Bundle bundle = Platform.getBundle("org.eclipse.ui.ide"); 
System.out.println(bundle.getVersion()); 

getBundleは、インストールされているすべてのバンドルを指定されたシンボリック名のバンドルで検索するようにOSGiランタイムに要求します。

+0

このバンドルがマニフェストファイルで利用可能な場合、プラグインでのみ動作しますか? – Amit740

+0

いいえ、問題のバンドルが実行時に利用可能であれば十分です。例えば。それはあなたのプラグインの一時的な依存性かもしれません。 –

+0

今は別のJavaプログラムを実行しているので、プラグインの一部ではありません。今すぐPlatform.getBundle( "org.eclipse.platform")はnullを返します。私が入力する「org。*」バンドルと同じです。 – Amit740

関連する問題