Bonjour,
Afin de mettre au point un systeme de mise à jour par svn de mon plugin, j'aimerai connaître le chemin du repertoire où se situe le (ou les) jars de mon plugin (par exemple "/c:/program files/eclipse/plugins/").
Merci d'avance.
Version imprimable
Bonjour,
Afin de mettre au point un systeme de mise à jour par svn de mon plugin, j'aimerai connaître le chemin du repertoire où se situe le (ou les) jars de mon plugin (par exemple "/c:/program files/eclipse/plugins/").
Merci d'avance.
Salut,
Je ne suis pas sûr d'avoir bien compris, tu souhaites connaitre le répertoire des sources de ton plugin ou le répertoire où sont installé tes plugins ?
Je voudrais connaitre le repertoire ou est installé mon plugin.
Bonsoir,
pour recuperer le chemin de ton plugin il faut que tu utilises la méthode getStateLocation
de ton instance plugin. cette méthode retourne un IPath.
Voici un exemple qui recupere sous forme de string le chemin ou est
installé ton plugin :
ou plugin est de type org.eclipse.core.runtime.PluginCode:plugin.getStateLocation().toFile().getAbsolutePath();
Angelo
j'ai déja essayé cette méthode mais malheureusement ca ne renvoie pas le chemin du plugin mais celui d'un repertoire dans les metadata du workspace ou mon plugin peut mettre des fichiers à loisir. (cad workspace\.metadata\.plugins\mon.nom.de.plugin)
extrait de la javadoc :
Moi j'ai besoin du répertoire ou est placé mon plugin (cad généralement eclipse\plugins\).Code:
1
2
3
4
5
6
7
8
9
10
11 * Returns the location in the local file system of the * plug-in state area for this plug-in. * If the plug-in state area did not exist prior to this call, * it is created. * <p> * The plug-in state area is a file directory within the * platform's metadata area where a plug-in is free to create files. * The content and structure of this area is defined by the plug-in, * and the particular plug-in is solely responsible for any files * it puts there. It is recommended for plug-in preference settings and * other configuration parameters.
C'est pour mettre en place un systeme de configuration/mise à jour de mon plugin à partir de fichiers présent sur un repository svn.
Merci quand meme pour ton aide.
j'ai trouvé ca : plugin.getBundle().getLocation() qui renvoie quelque chose qui ressemble à ce que je cherche mais je ne sais pas si ca renvoie toujours la bonne valeur.
Je t'envoie la fonction que j'utilise pour recuperer le chemin a partir de mon plugin :
Pur avoir le chemin de ton plugin tu faitsCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 /** * Return the real path of <code>fileSource</code> which is stored into * the plugin. * * @param plugin * @param fileSource * @return */ public static String getRealPath(Plugin plugin, String sourceFile) { try { //plugin.getStateLocation().toFile().getAbsolutePath(); URL urlPlatform = plugin.getDescriptor().getInstallURL(); URL fileInPluginURL = new URL(urlPlatform, sourceFile); URL localFileInPluginURL = Platform.asLocalURL(fileInPluginURL); String path = localFileInPluginURL.getPath().toString(); if (path.startsWith("/")) { path = path.substring(1, path.length()); } return path; } catch (Exception e) { return null; } }
le probleme c'est que le code fait appel a ds methods deprecated.Code:PluginUtils.getRealPath(AkrogenPlugin.getDefault(), "")
Angelo
merci pour ton code.
Apparament, depuis eclipse 3.0, les informations ne sont plus stockés dans le Plugin mais dans le Bundle associé.
Je pense que ta méthode peut se réecrire sans utiliser de méthode déprécié comme ca :
en tout cas ca marche pour moi.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public static String getRealPath(Plugin plugin, String sourceFile) { try { Bundle bundle = plugin.getBundle(); URL entryUrl = bundle.getEntry(sourceFile); URL fileUrl = FileLocator.toFileURL(entryUrl); String path = fileUrl.toString(); if (path.startsWith("/")) { path = path.substring(1); } return path; } catch (IOException e) { return null; } }
Si tu accède à d'autres plugin avec la méthode dépréciée Platform.getPlugin(String id) : Plugin, alors tu peux maintenant y accéder avec la méthode Platform.getBundle(String id) : Bundle et modifier ta méthode getRealPath pour prendre en paramêtre un Bundle.
Au passage, le deuxième argument de la méthode substring n'est pas nécessaire.
Bonjour merci
beaucoup pour ton code ameliroe.
Je vais tester ca tout de suite et si ca merche pour mon cas
je l'utiliserais.
Angelo
Oups, je m'était trompé dans le code, c'est pas la methode toFileURL qu'il faut utiliser mais resolve.
Et il faut faire un peu plus de traitement ensuite car la méthode FileLocator.resolve(URL url) renvoie une url du type :
Code:file:C:\test\eclipse\plugins\com.mon.plugin_1.0.0.jar!/