Come posso ottenere il numero di versione di una funzione Eclipse personalizzata in fase di esecuzione?

StackOverflow https://stackoverflow.com/questions/817299

Domanda

Vorrei visualizzare il numero di versione di una funzione Eclipse personalizzata che sto sviluppando nella barra del titolo della sua prospettiva. C'è un modo per ottenere il numero di versione dal plugin di runtime e / o workbench?

È stato utile?

Soluzione

Qualcosa del tipo:

Platform.getBundle("my.feature.id").getHeaders().get("Bundle-Version");

dovrebbe fare il trucco.

Nota ( da questa discussione ) che non può essere usato ovunque all'interno del plugin stesso:
this.getBundle () non è valido fino a quando AFTER super.start (BundleContext) non è stato chiamato sul tuo plug-in.
Quindi se stai usando this.getBundle () nel tuo costruttore o nel tuo start (BundleContext) prima di chiamare super.start () , allora restituirà null.


Se fallisce, hai qui una più completa " versione " :

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

Altri suggerimenti

Uso la prima opzione:

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

Come dice @zvikico sopra, la risposta accettata non funziona per le funzionalità, ma solo per i plug-in (pacchetti OSGi, che le funzionalità non sono). Il modo per ottenere informazioni sulle funzionalità installate è tramite org.eclipse.core.runtime.Platform.getBundleGroupProviders () come descritto qui .

Una versione di ciò che VonC ha fornito per recuperare il numero di versione principale di Eclipse, ma una che non fa riferimento alle classi interne (cosa che dovresti evitare di fare):

Platform.getBundle(PlatformUI.PLUGIN_ID).getHeaders().get("Bundle-Version");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top