2011-07-05 5 views

Répondre

0

Essayez ci-dessous le code:

import org.eclipse.osgi.service.datalocation.Location; 

public <T> T getService(Class<T> clazz, String filter) { 
     BundleContext context = getBundle().getBundleContext(); 
     ServiceTracker tracker = null; 
     try{ 
      tracker = new ServiceTracker(context, context.createFilter("(&(" + Constants.OBJECTCLASS + "=" + clazz.getName() //$NON-NLS-1$ //$NON-NLS-2$ 
        + ")" + filter + ")"), null); //$NON-NLS-1$ //$NON-NLS-2$ 
      tracker.open(); 
      return (T) tracker.getService(); 
     } catch (InvalidSyntaxException e) { 
      return null; 
     } finally { 
      if(tracker != null) 
       tracker.close(); 
     } 
    } 

getService(Location.class, Location.INSTALL_FILTER) 
+0

Travaillé! Je vous remercie. – timk

+3

Ceci vous donne l'osgi.install.area qui est l'emplacement par défaut de l'exe, mais cela peut être différent de l'emplacement réel de l'exécutable du lanceur dans certains cas. L'exécutable transmet son emplacement en java et org.eclipse.equinox.launcher définit la propriété système "eclipse.launcher" avec cette valeur. –

+0

Obtenir la propriété du système était encore plus simple! Génial. – timk

0

Ce fut un commentaire dans la réponse ci-dessus par Andrew Niefer, beaucoup plus simple:

String eclipseExecutablePath = System.getProperty("eclipse.launcher"); 
System.out.println(eclipseExecutablePath); 
Questions connexes