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)
Travaillé! Je vous remercie. – timk
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. –
Obtenir la propriété du système était encore plus simple! Génial. – timk