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

API standards et tierces Java Discussion :

Restriction sur une librairie requise


Sujet :

API standards et tierces Java

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut Restriction sur une librairie requise
    Bonjour
    Je viens de découvrir un problème que je n'avais pas avec java 7 mais que j'ai avec java 8.
    sous eclipse le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            tableau.getTableHeader().setDefaultRenderer(new DefaultTableCellHeaderRenderer()
            {
                @Override
                public Component getTableCellRendererComponent(JTable table, Object value,  boolean isSelected, boolean hasFocus, int lig, int col) 
                {
                    Component c = super.getTableCellRendererComponent(table, value, isSelected,  hasFocus, lig, col);
                    if( ((Tableau)table).isEditable(col)) c.setForeground(Color.RED);
                    else c.setForeground(Color.BLACK);
                    return c;
                }
            });
    est en erreur

    DefaultTableCellHeaderRenderer me renvoie l'erreur suivante :
    Access restriction: The type 'DefaultTableCellHeaderRenderer' is not API (restriction on required library 'C:\Program Files\Java\jre1.8.0_45\lib\rt.jar')

    et la ligne
    Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, lig, col); renvoie
    Access restriction: The method 'DefaultTableCellHeaderRenderer.getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int)' is not API (restriction on required library 'C:\Program Files\Java\jre1.8.0_45\lib\rt.jar')
    C'est en respectant les autres que l'on se fait respecter.

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Est-ce que tu es sous Eclipse ?

    Si oui, compares ton problème à celui-ci : http://www.developpez.net/forums/d12...e/#post7012513 (et esssayes d'appliquer la correction).
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut
    Citation Envoyé par Logan Mauzaize Voir le message
    Est-ce que tu es sous Eclipse ?

    Si oui, compares ton problème à celui-ci : http://www.developpez.net/forums/d12...e/#post7012513 (et esssayes d'appliquer la correction).
    En effet c'était bien un problème d'autorisation. J'en ai marre que mon ordi que je suis seul à utiliser et qui ne contient aucun secret d'état se transforme en fort-knocx

    Merci beaucoup

    Résolu
    C'est en respectant les autres que l'on se fait respecter.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut
    Citation Envoyé par Patrice Henrio Voir le message
    En effet c'était bien un problème d'autorisation. J'en ai marre que mon ordi que je suis seul à utiliser et qui ne contient aucun secret d'état se transforme en fort-knocx

    Merci beaucoup

    Résolu
    Et bien non. Le problème est revenu. Quelqu'un a-t'il déjà rencontré cela ?

    Je rappelle l'erreur :
    Access restriction: The type 'DefaultTableCellHeaderRenderer' is not API (restriction on required library 'C:\Program Files\Java\jre1.8.0_45\lib\rt.jar')

    Or rt.jar est tout ce qu'il y a de plus classique.

    Je programme sous deux versions d'eclipse avec la même JRE (1.8). Pour la même classe
    sous la version
    Version: Kepler Service Release 1, Build id: 20130919-0819
    pas d'alerte

    sous la version
    Version: Luna Service Release 2 (4.4.2), Build id: 20150219-0600
    erreur indiquée ci-dessus.
    C'est en respectant les autres que l'on se fait respecter.

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    En fait c'est un comportement normal, puisque DefaultTableCellHeaderRenderer fait partie du package "sun.swing.table". Les packages préfixés par "sun." sont censés être privés car ils ne font pas partie de l'API Java mais de son implémentation par Sun/Oracle.
    Si tu utilises une autre implémentation de la JVM ou suivant les évolutions avenirs, le fonctionnement de ton code n'est pas garantie.

    Sinon tu peux modifier les restrictions d'accès dans les propriétés de ton projet :
    Nom : Eclipse-Edit_Access_Restriction.png
Affichages : 1053
Taille : 95,1 Ko
    Nom : Eclipse-Edit_Access_Restriction_2.png
Affichages : 980
Taille : 51,6 Ko

    Sélectionnez :
    • Résolution : Accessible
    • Rule Pattern : sun/swing/table/**

    Nom : Eclipse-Edit_Access_Restriction_3.png
Affichages : 958
Taille : 30,1 Ko

    Toutes ces informations seront enregistrées dans le fichier ".classpath" de ton projet que tu pourras éventuellement remettre en configuration.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut
    Merci beaucoup. Le problème est effectivement réglé . J'avais bien vu qu'il y avait quelque chose de ce genre là (api non publique) mais pourquoi la version précédente d'eclipse laissait passer cela sans problème et que là elle bloque ?
    C'est en respectant les autres que l'on se fait respecter.

  7. #7
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Est-ce que le fichier .classpath est un élément partagé ?

    Comme tu peux le voir sur mes captures j'ai spécifié un environnement d'exécution (pas de VM particulière), peut-être que le comportement est différent si tu dis dépendre d'une VM en particulier.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut
    Citation Envoyé par Logan Mauzaize Voir le message
    Est-ce que le fichier .classpath est un élément partagé ?

    Comme tu peux le voir sur mes captures j'ai spécifié un environnement d'exécution (pas de VM particulière), peut-être que le comportement est différent si tu dis dépendre d'une VM en particulier.
    J'ai exactement la même chose que toi quand je clique sur Project/Properties/Java Build Path/Libraries/JRE System Library [JavaSE-1.8].
    De là à savoir sir le .classpath est partagé ... je ne me suis jamais posé la question.
    C'est en respectant les autres que l'on se fait respecter.

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

Discussions similaires

  1. restriction sur une classe template
    Par Math75 dans le forum Langage
    Réponses: 31
    Dernier message: 02/10/2009, 12h02
  2. [WD9] Restriction sur une année
    Par Rascarkapack dans le forum WebDev
    Réponses: 2
    Dernier message: 29/01/2009, 12h03
  3. Ajouter une référence sur une librairie de classe
    Par Poussy-Puce dans le forum ASP.NET
    Réponses: 5
    Dernier message: 07/05/2008, 19h09
  4. Erreur de compilation sur une librairie en mode debug
    Par bakaneko dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/05/2006, 17h32
  5. ajouter une restriction sur une requete
    Par linou dans le forum Oracle
    Réponses: 2
    Dernier message: 19/10/2005, 15h20

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