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] Erreur "The site for a view must be an IViewSite"


Sujet :

Eclipse Platform

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Par défaut [RCP] Erreur "The site for a view must be an IViewSite"
    Bonjour, j'utilise eclipse RCP pour mon stage dans le but de créer une maquette en utilisant des vues d'une autre application RCP, malheureusement j'ai un problème que j'ai recréé à partir de l'exemple Navigator (http://dev.eclipse.org/viewcvs/index...n.html?view=co)

    dans un premier temps je crée un client RCP avec une vue à partir du wizard d'eclipse (RCP application with a view), et je modifie la vue en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class View extends Navigator implements IViewPart{
    	public static final String ID = "MyGui.view";	
    	public View() {
    		super();
    	}
    }
    ensuite je crée un plugin avec les jar contenant les classes utilisé par Navigator (wbnavigator.jar, navigator.jar, ...)
    j'ajoute le plugin aux dépendances de l'application et lorsque je lance l'application j'ai l'erreur suivante à l'intérieur de la vue :

    org.eclipse.ui.internal.misc.AssertionFailedException: assertion failed; The site for a view must be an IViewSite
    at org.eclipse.ui.internal.misc.Assert.isTrue(Assert.java:106)
    at org.eclipse.ui.part.ViewPart.checkSite(ViewPart.java:185)
    at org.eclipse.ui.part.WorkbenchPart.setSite(WorkbenchPart.java:266)
    at org.eclipse.ui.part.ViewPart.init(ViewPart.java:101)
    at org.eclipse.ui.part.ViewPart.init(ViewPart.java:117)
    at org.eclipse.ui.workbench.navigator.internal.Navigator.init(Unknown Source)


    ce qui indique que dans la methode checkSite de la classe ViewPart:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected final void checkSite(IWorkbenchPartSite site) {
            super.checkSite(site);
            Assert.isTrue(site instanceof IViewSite, "The site for a view must be an IViewSite"); //$NON-NLS-1$
        }
    reçoit un site n'étant pas une instance de IViewSite, or les méthodes init de la classe Navigator et ViewPart ont comme signatures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public void init(IViewSite site, IMemento memento); //classe Navigator et ViewPart
    public void init(IViewSite site); //classe ViewPart
    et ne font que remonter le site, qui est bien une intance de IViewSite puisque les méthodes sont bien appelées.

    de plus j'ai lu sur le forum que la gestion des sites était une mécanique interne à RCP (http://www.developpez.net/forums/arc.../t-228241.html)

    j'ajoute que j'utilise eclipse 3.1 (car l'application que j'utilise pour ma maquette a été développé en 3.1) mais que l'erreur est la même en 3.2

    je vous remercie d'avance pour vos réponses, c'est surement une petite connerie de ma part vue que je débute avec RCP depuis quelques jours.

    n'hésitez à demandez des compléments si mon post n'est pas assez clair.

  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
    Salut,

    Pour être capable de mieux cerner ton problème j'aurais besoin de savoir (ou de voir le code) concernant l'ouverture de ta fenêtre. Probablement que dans le core de ton appli RCP tu dois avoir une classe qui décrit la perspective de base à lancer et l'affichage des vues à l'intérieur de cette perspective. J'estime que le problème pourrait venir de cet endroit.

    Cherche une classe héritant de IPerspectiveFactory et post le code.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Par défaut
    Merci, la seule classe implémentant IPerspectiveFactory de mon projet est la Perspective de base créée par le wizard d'eclipse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Perspective implements IPerspectiveFactory {
     
    	public void createInitialLayout(IPageLayout layout) {
    		String editorArea = layout.getEditorArea();
    		layout.setEditorAreaVisible(false);
    		layout.setFixed(true);
     
    		layout.addStandaloneView(View.ID,  false, IPageLayout.LEFT, 1.0f, editorArea);
    	}
     
    }

  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
    Ta perspective de base me semble bien codée au premier coup d'oeil et le problème ne doit pas venir de là. Une question me vient à l'esprit: La classe Navigator n'implémente pas elle même l'interface IViewPart? Pourquoi l'implémentes-tu toi aussi dans ta classe View?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Par défaut
    en effet la classe Navigator étend NavigatorViewPart qui étend ViewPart qui implémente l'interface IViewPart, mais lorsque ma vue n'implémente pas IViewPart alors j'ai l'erreur suivante :

    ComponentException: unable to instantiate Expecting an instance of IViewPart, IEditorPart or ComponentFactory but found myGui.View

  6. #6
    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
    As-tu essayé d'instancier directement la vue Navigator? Est-ce qu'elle a String ID définit? Il semble y avoir quelque chose de bizarre à propos de l'erreur que tu indiques. Tu ne devrais pas devoir implémenter deux fois l'interface IViewPart dans ton architecture, et de plus, ta classe View n'offre même pas les fonctions qui représentent l'interface IVewPart. En gardant ton code, tu pourrais soit essayer de rédéfinir les fonctions nécessaires à l'interface IViewPart et d'appeler les fonctions héritées de NavigatorViewPart à l'intérieur ou de régler le problème sans l'interface IViewPart au niveau de ta vue View. (Il est aussi possible que la vue Navigator ne soit pas codée pour être héritable correctement)

    Jamais vu un problème semblable. Lâche pas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/05/2015, 11h47
  2. [PPC][C#][Sql CE] erreur "no data exists for the row/column"
    Par Jessika dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/04/2007, 12h13
  3. [RCP] erreur lors de l'instanciaton de view, plugin.xml en cause?
    Par TabrisLeFol dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 06/07/2006, 13h52
  4. [Eclipse / Jonas] Erreur "jonas-entity missing for bean"
    Par citygirl dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/05/2005, 11h59

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