Dans mon application RCP, je voudrais pointer une propriété ( Y a-t-il une spécification définitive sur quel type de variables sont pris en charge dans config.ini? p>
@ config.dir semble être pris en charge, il y a des références dans la construction, et il est toujours mentionné comme exemple typique (par exemple, cette réponse )
Cependant, en regardant des docs comme Eclipse help / Options d'exécution , il mentionne quelques" emplacements symboliques "comme @ user.home; Cependant, cela semble assez limité et n'inclut pas @ config.dir. p>
a même creusé dans est-ce @ config.dir un cas spécial, uniquement géré par P2? Merci pour des indices. P> osgi.java.profile code>) dans un fichier et préféreriez utiliser des chemins par rapport à mon installation et de la configuration Dir. P>
org.eclipse.osgi code> également des sources, et je n'ai trouvé aucune référence à ceci (j'ai trouvé l'emplacementManager et ses substitutions de variable codées durement pour @ user.dir & CO).
Puis-je me référer à des propriétés du système arbitraire là-bas? p>
5 Réponses :
de org.eclipse.core.runtime.adaptor.locollectManager, voici les jetons spéciaux:
Merci Chris -i a trouvé la même liste (voir ma question). Il semble assez limité - alors je me demandais si j'ai raté quelque chose (Propriétés du système E.g ou SG comme ça). Après avoir débogué dans le cadre, il ne semble pas beaucoup d'espoir.
J'ai également posé une question similaire sur l'Equinox Newsgroup Eclipse. org / forums / ... - En attente de réponse.
@inger: Il semblait assez clair du code source que ce sont les seules options prises en charge.
Eh bien, de la recherche uniquement chez EmplacementManager, oui, c'est un peu clair - je l'ai trouvé dans quelques minutes aussi. Mais cela n'a pas expliqué pourquoi @ config.dir est pris en charge alors (comme je l'ai dit que je suppose maintenant, c'est une manipulation spéciale pour P2, assez étrange, je pense). J'espérais juste que ce problème a été résolu d'une autre manière autrement osgi.java.profile semble assez inutile pour le développement de la RCP. Cela aurait été formidable si le juste accroché dans $ {System.properties} plutôt que des remplacements de codés dur stupides.
Pourquoi ne pas utiliser deux variables de propriété système? p>
one est nommé La propriété système est transmise à la JVM, vous avez besoin d'un peu délicat (traduire la variable en cours) dans le lanceur natif (comme Eclipse.exe) si vous souhaitez utiliser une variable dans sa valeur. P> -dmy.relativePath = nom de fichier code>, qui est traité par votre code de chemin relatif du dossier d'installation Eclipse (espace de travail ou n'importe où), un autre est appelé
-dmy.path = -DMY.PATH = Absolutepath code>. p>
Bien sûr, je peux essayer une solution de contournement où je crée des propriétés que l'Eclipse aurait dû, mais cela nécessiterait au moins un script de lanceur supplémentaire, des hacks supplémentaires. Après cela, je ne suis toujours pas sûr de pouvoir atteindre cette propriété dans Config.ini, Dans le cadre d'autres définitions de propriété .. Ce que j'étais vraiment intéressé s'il y avait une fonctionnalité Eclipse pour faire cela que j'ai manqué.
@inger, c'est certainement un délicat de P2. Vous pouvez trouver @ config.dir est substitué par la valeur de la propriété-cadre 'osgi.configuration.area' en exécution. Voir la méthode org.eclipse.equinox.internal.p2.core.activator.buildLocation (chaîne, URI, Boolean, Boolean). La valeur de la propriété système de JVM 'ECLIPSE.P2.DATA.AREA' TOUJOURS est '@ config.dir /../ p2'.
Regarde comment osgi.java.profile est résolu dans osgi.java .profile doit pointer soit sur une URL entièrement qualifiée, soit à un chemin relatif dans l'ensemble du système ( org.eclipse.osgi.framework.internal.core.framework code>:
org.eclipse.osgi code>). Cela rend l'utilisation impossible d'utilisation du trajet relatif de répertoire d'installation sans corriger Eclipse. P> P>
Vous pouvez utiliser une URL de la plate-forme ( Plate-forme URI ) Pour y parvenir, c'est-à-dire dans Vous pouvez également utiliser les propriétés du système existantes dans config.ini: p> config.ini code>, pointerait au fichier
java_profile.txt code> dans le répertoire de configuration actuel. p>
Je suppose que cela sera utile - essayer dès que possible. Savez-vous si ce support est récemment ajouté, cela fonctionnerait-il dans 3.6.x? La dernière fois que j'ai abandonné et fini avec des chemins absolus désagréables ..
@inger Oui, il devrait fonctionner pour 3.6, au moins en fonction du Documentation
Je suis en retard à la fête, mais j'espère que cela aidera les autres à l'avenir.
À partir de Eclipse 3.8 / 4.2 (juin 2012), vous pouvez remplacer les propriétés Java et les variables d'environnement dans votre fichier config.ini ( Eclipse Bug 241192 ). Le lanceur Equinox ne prend pas en charge la substitution dans le fichier eclipse.ini Launcher. La syntaxe utilise des panneaux de dollar ($ variable $) pour indiquer la substitution variable: p> J'imagine que vous pouvez utiliser quelque chose comme celui-ci à vos fonctions: p> osgi.java.profile=$osgi.install.area$/path/to/profile.txt
Fonctionne bien avec certaines variables par ex. osgi.install.area code>. Autres variables telles que
osgi.configuration.area code> ne sont pas résolues.
+1 et j'ouvre une prime pour cette question. J'ai vraiment besoin de pouvoir spécifier un chemin relatif au répertoire d'installation, plutôt que la zone de configuration, pour l'ECLIPSE.P2.DATA.AREA dans mon config.ini. Si quelqu'un peut me dire comment faire cela, avoir 200 représentants!
@Pelotom, merci pour le boost - j'espère. Je suis vraiment convaincu que ma question n'a pas de réponse précise (c'est incroyable mais la substitution ne semble plus codée dans le noyau). Toutefois, puisque vous semblez être plus intéressé par un Propriété spécifique à P2, il peut être mieux supporté, c'est-à-dire @ config.dir semble être spécialement géré par P2 CONFIG TRAITEMENT - peut-être que ce n'est pas le seul.