2010-06-21 6 views
1

Je dispose d'un ensemble de mise à jour qui recherche dans un dossier spécifique «groupe» et recherche de nouveaux ensembles à installer et à mettre à jour pour les ensembles actuellement installés. Dans un répertoire parent, le framework OSGi se trouve dans le répertoire "/ framework", le bundle updater dans le répertoire "/ system" et le répertoire doit être vérifié dans le répertoire "/ bundles" du même répertoire parent. A l'intérieur du bundle de mise à jour, un objet File avec un chemin relatif est créé mais il ne fonctionne pas avec la chaîne "./bundles", et je ne sais pas avec quel fichier jar le chemin est supposé être relatif. Je vous serais reconnaissant toute connaissance ou des informations sur ce problème .. Merci , DenizChemin d'accès relatif à partir d'un groupe OSGi

Edit: déjà compris. On dirait que le chemin est résolu en fonction du script Ruby que j'utilise pour démarrer Equinox. Donc le chemin de résolution est un répertoire que je lance Equinox en lui passant un drapeau "-console" en utilisant le système Ruby. Merci pour les réponses, Deniz

Répondre

0

Déjà compris. On dirait que le chemin est résolu en fonction du script Ruby que j'utilise pour démarrer Equinox. Donc le chemin de résolution est un répertoire que je lance Equinox en lui passant un drapeau "-console" en utilisant le système Ruby. Merci pour les réponses, Deniz

2

Dépend de votre configuration et de votre implémentation OSGi. Cela pourrait être relatif à un certain nombre d'endroits, le plus probable étant l'emplacement du cadre. Pourquoi ne pas tester en créant votre fichier avec un chemin relatif, et la vérification de la valeur de

new File("./bundles").getAbsolutePath(); 

Espérons que cela aide.

3

Nouveau fichier ("./ bundles") resolves par rapport au répertoire de travail en cours.

Vous pouvez installer votre bundle en obtenant un flux d'entrée vous-même et en appelant BundleContext # installBundle (String, InputStream). OSGi lui-même ne fait aucune hypothèse sur la disposition du système de fichiers, ou que les bundles sont même sur le disque. Mais si vous utilisez Equinox comme framework, vous pouvez résoudre vos chemins relatifs par rapport à "osgi.install.area". Le Location service peut vous donner ceci. Ensuite, utilisez le chemin absolu pour installer le bundle. Ou, vous pouvez obtenir l'ensemble système (BundleContext.getBundle (0)), et utiliser FileLocator (à partir de org.eclipse.equinox.common) pour le trouver sur le disque.

+0

thats une information utile pour les besoins futurs, merci .. –

+0

Après est Equinox: http://wiki.eclipse.org/index.php/FAQ_How_do_I_find_out_the_install_location_of_a_plug-in%3F – fikovnik