Je voudrais afficher le numéro de version d'une fonction Eclipse personnalisée que je développe dans la barre de titre de sa perspective. Est-il possible d'obtenir le numéro de version à partir du plugin d'exécution et/ou du workbench?Comment puis-je obtenir le numéro de version d'une fonction Eclipse personnalisée lors de l'exécution?
Répondre
Quelque chose comme:
Platform.getBundle("my.feature.id").getHeaders().get("Bundle-Version");
devrait faire l'affaire.
Note (from this thread) qu'il ne peut pas être utilisé partout dans les le plug-in lui-même:
this.getBundle()
n'est pas valable qu'APRÈS super.start(BundleContext)
a été appelé sur votre plug-in.
Donc si vous utilisez this.getBundle()
dans votre constructeur ou dans votre start(BundleContext)
avant d'appeler super.start()
alors il renverra null.
Si cela échoue, vous avez ici un more complete "version":
public static String getPlatformVersion() {
String version = null;
try {
Dictionary dictionary =
org.eclipse.ui.internal.WorkbenchPlugin.getDefault().getBundle().getHeaders();
version = (String) dictionary.get("Bundle-Version"); //$NON-NLS-1$
} catch (NoClassDefFoundError e) {
version = getProductVersion();
}
return version;
}
public static String getProductVersion() {
String version = null;
try {
// this approach fails in "Rational Application Developer 6.0.1"
IProduct product = Platform.getProduct();
String aboutText = product.getProperty("aboutText"); //$NON-NLS-1$
String pattern = "Version: (.*)\n"; //$NON-NLS-1$
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(aboutText);
boolean found = m.find();
if (found) {
version = m.group(1);
}
} catch (Exception e) {
}
return version;
}
J'utilise la première option: Comme dit ci-dessus @zvikico
protected void fillStatusLine(IStatusLineManager statusLine) {
statusItem = new StatusLineContributionItem("LastModificationDate"); //$NON-NLS-1$
statusItem.setText("Ultima Actualizaci\u00f3n: "); //$NON-NLS-1$
statusLine.add(statusItem);
Dictionary<String, String> directory = Platform.getBundle("ar.com.cse.balanza.core").getHeaders();
String version = directory.get("Bundle-Version");
statusItem = new StatusLineContributionItem("CopyRight"); //$NON-NLS-1$
statusItem.setText(Messages.AppActionBar_18);
statusLine.add(statusItem);
}
encore mieux: \t Version chaîne = Platform.getBundle ("ar.com.cse.balanza.core"). GetVersion(). ToString(); – Nicolas400
, la réponse acceptée ne fonctionne pas Fonctionnalités, uniquement les plug-ins (bundles OSGi, quelles fonctionnalités ne le sont pas). Le moyen d'obtenir des informations sur les fonctionnalités installées est via org.eclipse.core.runtime.Platform.getBundleGroupProviders()
comme described here.
Une version de ce VonC fourni pour récupérer le numéro principal de version d'Eclipse, mais qui ne fait pas référence à des classes internes (que vous devriez éviter de faire):
Platform.getBundle(PlatformUI.PLUGIN_ID).getHeaders().get("Bundle-Version");
AFAIK, cela fonctionne pour les plugins mais pas pour fonctionnalités. Je ne suis pas sûr qu'il existe un moyen d'obtenir la version pour les fonctionnalités. – zvikico