2009-05-03 12 views

Répondre

6

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; 
} 
+3

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

1

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); 
} 
+0

encore mieux: \t Version chaîne = Platform.getBundle ("ar.com.cse.balanza.core"). GetVersion(). ToString(); – Nicolas400

0

, 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.

0

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");