Forum Programmation.java erreur au lancement de Java

Posté par  .
Étiquettes : aucune
0
9
juin
2005
Un utilisateur de mon programme E-Anim ( écrit en java) m'envoie ce problème au démarrage.

Savez-vous d'où cela peut provenir et comment le corriger ?
----------------
Voilà ce que me donne l'utilisation du script :
java -cp "" eanim

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$­­000(Unknown Source)
at sun.awt.X11GraphicsEnvironment$­­1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(Unknown Source)
at java.awt.Window.init(Unknown Source)
at java.awt.Window.(Unknown Source)
at java.awt.Frame.(Unknown Source)
at java.awt.Frame.(Unknown Source)
at fen.(fen.java:215)
at eanim.main(eanim.java:229)

--------------

Si vous désirez vérifier directement avec le programme E-Anim (il est en licence libre) vous pouvez le télécharger sur ce site :
http://www.phildes.com(...)

Merci de votre aide

Phildes
  • # erreur au lancement de Java

    Posté par  . Évalué à 3.

    Xlib: connection to ":0.0" refused by server

    Ça, ça veut dire que le serveur graphique à refuser à l'application cliente (en java) de se connecter.

    Il faudrait savoir dans quel contexte l'utilisateur a essayé de la lancer.

    Si tu ne le sais pas, "l'adresse" d'un serveur graphique est de la forme : nom_machine:num_serv.num_ecran

    num_serv est le numéro du serveur graphique (il peut y en avoir plusieurs sur la machine), en général 0. num_ecran est le numéro de l'écran, et c'est en général 0 aussi. Le nom de la machine peut être omis quand c'est la machine locale.

    Cette valeur est renseignée dans la variable d'environnement DISPLAY. On peut l'afficher avec la commande "echo $DISPLAY".

    Dans 95% des cas, la valeur ":0.0" suffit (et ça équivaut à localhost:0.0). Par contre, quand on se connecte à distance à une machine via ssh (par exemple) avec le X11Forwading, le numéro d'écran est différente (c'est un serveur géré et crypter par ssh) et on peut avoir quelque chose du genre machin:10.0

    Il faut donc que tu demande à l'utilisateur s'il a lancer l'appli java en local, ou en passant par le réseau.

    Une autre explication est qu'il a changé d'utilisateur avec une commande "su" et que cet utilisateur n'a donc pas le droit de se connecter à la session graphique en cours (voir la commande xhost pour gérer ça).

    Xlib: No protocol specified

    Il me semble que ce message d'erreur viens très souvent avec le premier, et la cause vient de ce que j'ai expliqué au dessus. Mais je ne suis pas sûr à 100%.
    • [^] # Re: erreur au lancement de Java

      Posté par  (site web personnel) . Évalué à 2.

      Entièrement d'accord avec ce que tu dis, j'ajoute juste un petite précision.

      Apparemment la variable DISPLAY est bien définie confère : "Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable."

      Le serveur X, qui existe et réponds non, doit appartenir à quelqu'un d'autre. Il faut soit conseiller à l'utilisateur de lancer l'application avec le même utilisateur que celui qui à lancer le X, soit lui demander avec l'utilisateur qui a lancé X de taper la commande suivante afin d'autoriser les personnes local à accéder au serveur X :

      xhost +localhost +LOCAL:all
      • [^] # Re: erreur au lancement de Java

        Posté par  . Évalué à 2.

        Voici un message de la personne qui m'a envoyé cette erreur :
        http://andesi.org/forum/viewtopic.php?t=4523&sid=bcc00f90c55fc1(...)

        En fait, il semble que ce Linux a des problèmes qui dépassent le cadre de Java.

        De mon côté, la qualité de vos réponses me fait comprendre un peu mieux Linux.

        Merci de vos réponses.

        Phildes
        • [^] # Re: erreur au lancement de Java

          Posté par  . Évalué à 2.

          De mon côté, la qualité de vos réponses me fait comprendre un peu mieux Linux.

          Pour rentrer un peu plus dans les détails, l'interface graphique de Linux et des Unix fonctionne en mode client/serveur. Un serveur, XFree, X.org ou un autre, tourne sur une machine et gère l'écran, le clavier et la souris et s'occupe de dessiner dessus et de capter les évènement clavier/souris.
          De l'autre coté, les clients sont les logiciels qui ont une interface graphique. Ils se connectent au serveur (indiqué par la variable d'environnement DISPLAY ou l'option -display machine:1.0) pour lui demander de dessiner son interface (rectangle, trait, texte ...). Heureusement pour les développeurs, des bibliothèques se chargent de ce boulot, Qt/Gtk/Motif pour les objets complexes (fenêtres, boutons ...) et la bibliothèques Xlib, fournie en même temps que le serveur, dont tu vois apparaitre un message d'erreur (puisque c'est à son niveau qu'est établi la liaison client/serveur).

          On peut ainsi afficher sur une machine A l'interface graphique d'un programme tournant sur une machine B, en réglant juste la variable d'environnement DISPLAY (sous réserve d'autoriser B à afficher sur A, avec Ssh, c'est transparent), et ce, avec toutes les machines Unix (Linux, Aix, Solaris ...).

          Pour en savoir plus, il y des sites plus complets, par exemple http://lea-linux.org/(...) (hors service au moment où j'écris). Avec les quelques mots clés que je t'ai donné (client/serveur, Xfree, Xlib) tu pourras chercher sur internet.
          • [^] # Re: erreur au lancement de Java

            Posté par  . Évalué à 1.

            Déjà, tout ceci est très claire.

            Ces quelques explications m'ont fait comprendre le principe général.
            Je pourrais rechercher plus facilement des explications détaillées.

            A bientôt

            Phildes

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.