2017-09-17 6 views
0

Plus spécifiquement, je dois écrire du code pour pouvoir trouver le numéro de version Eclipse (4.7.0). Je ne peux pas rechercher dans un fichier (.eclipseproduct ou about.mappings) et je dois faire un appel d'API.Trouver le numéro de version de certains plugins dans Eclipse

Donc je me demandais si je serais capable de trouver le numéro de version du plugin org.eclipse.platform par un programme Java.

+0

Êtes-vous dans Eclipse en tant que plugin ou êtes-vous attaché à une instance en cours d'exécution? –

+0

Est-ce que ce code va être dans un plugin Eclipse ou est-ce un programme Java séparé? –

+0

Hi greg-449 Supposons un programme Java distinct et non un plugin. PerDigre La lecture de .eclipseproduct ne sera pas la solution la plus efficace pour moi une fois que j'aurai la version eclipse. – Amit740

Répondre

0

Je suppose que le moyen le plus simple est de l'obtenir à partir des propriétés du système, en supposant que vous êtes dans Eclipse en tant que runtime-workbench.

System.getProperty("eclipse.buildId") 

Si vous n'êtes pas dans le contexte Eclipse puis il y a soit les fichiers d'installation comme « .eclipseproduct » ou par le débogueur.

+0

Sop (System.getProperty ("eclipse.buildId")) renvoie null pour moi. – Amit740

+0

Il est défini dans le contexte Eclipse, c'est-à-dire runtime-workbench. Pour moi, il se lit "4.7.0.I20170612-0950". –

+0

Dans votre fichier eclipe.ini avez-vous un eclipse.buildId = 4.7.4.7.0.I20170612-0950? – Amit740

0

Vous pouvez obtenir le bundle (la représentation d'un plug-in dans le runtime OSGi) pour un nom symbolique donné avec Platform::getBundle. Une fois que vous avez un paquet, vous pouvez interroger sa version. Par exemple:

Bundle bundle = Platform.getBundle("org.eclipse.ui.ide"); 
System.out.println(bundle.getVersion()); 

getBundle demande la plateforme OSGi pour rechercher tous les paquets installés pour un paquet avec le nom symbolique donné. Pourquoi ne pouvez-vous pas le lire depuis .eclipseproduct?

+0

Est-ce que cela fonctionne uniquement sur les plugins si ce bundle est disponible dans mon fichier manifeste? – Amit740

+0

Non, il suffit que l'ensemble en question soit disponible au moment de l'exécution. Par exemple. il peut s'agir d'une dépendance transitoire de votre plug-in. –

+0

En ce moment j'exécute un programme Java séparé, donc pas une partie d'un plugin. RIght maintenant Platform.getBundle ("org.eclipse.platform") me renvoie null. La même chose avec tout bundle "org. *" Que j'entre. – Amit740