IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

[RCP] accés repertoire dans un .jar


Sujet :

Eclipse Platform

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de gamel
    Inscrit en
    Avril 2006
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 128
    Par défaut [RCP] accés repertoire dans un .jar
    Bonjour à tous,

    Je développe une appli RCP, j'ai besoin d'accéder à des documents que j'ai stocké dans un répertoire "docs", lorsque j'exporte mon "product" je suis obligé de mettre ce répertoire au même niveau que l'exe de mon appli généré par Eclipse alors que ce répertoire est aussi exporté. En effet je le retrouve dans un jar situé dans le dossier plugins de mon appli.
    Alors ma question est, comment accéder ce répertoire situé dans mon .jar???

  2. #2
    Membre chevronné Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Par défaut
    Tu dois utiliser une méthode qui se base sur un chemin d'accès relatif à la base de ton plugin. Un peu comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try {
       url = Platform.find(Platform.getBundle(bundleId), new Path(path));
       } catch (MalformedURLException e) {
       }
    image = ImageDescriptor.createFromURL(url);
    bundleId est le le id de ton bundle OSGI (ex: "org.eclipse.ui.view") et path est le chemin relatif de la resource que tu recherche dans ton plugin. (ex: "images/my_action.gif"). Le cas présenté récupère le url d'une image dans mon plugin et créé la resource nécessaire par la suite.

    J'espère que ça peu t'aider.

  3. #3
    Membre confirmé Avatar de gamel
    Inscrit en
    Avril 2006
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 128
    Par défaut
    Merci de ta réponse
    Je vais chercher dans cette voie. Tu me parles de choses que je ne maitrise absolument pas.
    Est ce que tu pourrais expliciter un peu plus ?
    Je ne comprends pas trop la notion de Bundle OSGi
    Pour info,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Platform.find(Platform.getBundle(bundleId), new Path(path));
    est deprecated
    il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileLocator.find(Platform.getBundle("org.eclipse.ui.view"), new Path(path),new HashMap<U,V>());

  4. #4
    Membre chevronné Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Par défaut
    Je vais essayer de t'expliquer clairement et d'une manière compréhensible ce que je crois connaître sur ce sujet. Il n'est pas garantit que toutes ces informations seront exactement correctes.

    OSGI est un standard qui détermine une manière de loader en java les objects compilées (fichiers .class) et de les exécuter. Ce standard est utilisé dans un projet à la base d'Eclipse nommé Equinox http://www.eclipse.org/equinox/. Ce projet permet entre autre à la plateforme d'Eclipse de pouvoir loader à la dernière minute (LazyStart) les plugins dont elle a besoin pour s'exécuter correctement. Par exemple, un éditeur n'est instancié que lorsqu'un fichier lui étant relié est choisit dans un "open dialog".

    Donc, tous les plugins sont en fait des bundles OSGI qui sont loadés en mémoire lorsqu'ils sont nécessaires. Ton plugin l'est autant que celui de org.eclipse.ui.views. Les plugins doivent donc tous avoir un nom (ou un code) différent pour qu'il n'y ait pas de conflits. Les bundles actifs sont listé dans un registre et y sont accessible par nom.

    Pour accéder à un bundle il faut utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Platform.getBundle(bundleId)
    J'espère que ça peut t'éclairer un peu plus, même si cette info n'est pas nécessaire à la construction d'un plugin ou à l'utilisation de la plateforme. Cependant, ça peut toujours être intéressant d'en savoir un peu plus.

  5. #5
    Membre confirmé Avatar de gamel
    Inscrit en
    Avril 2006
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 128
    Par défaut
    Non mais c'est vrai que c'est intéressant d'en savoir un peu plus
    alors voila moi j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    URL url = Platform.find(Platform.getBundle("bundleId"), new Path("myPath/main.htm"));
    browser.setUrl(url.toString());
    url.toString() me retourne bundleentry://57/myPath/main.htm

    Mais impossible de charger la page dans mon browser
    Aurais tu une idée pour me dépatouiller ??

    Dans tous les cas merci, tu m'as fait avancer

Discussions similaires

  1. Accès ressources dans un JAR
    Par GlamIS dans le forum Applets
    Réponses: 2
    Dernier message: 09/03/2012, 11h40
  2. Accès resources dans un jar
    Par Asterius dans le forum JSF
    Réponses: 2
    Dernier message: 30/07/2011, 12h53
  3. Acces fichier dans un JAr
    Par Katachana dans le forum Langage
    Réponses: 1
    Dernier message: 16/07/2007, 11h31
  4. Réponses: 5
    Dernier message: 30/04/2007, 18h03
  5. [Introspection] accès aux classes encapsulées dans un JAR
    Par couetbis dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 22/01/2007, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo