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

Java Discussion :

Problème utilisation jcurses


Sujet :

Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut Problème utilisation jcurses
    Bonjour,

    J'essai d'utiliser la librairie jcurses:

    http://sourceforge.net/projects/javacurses/

    Et lorsque j'essai d'exécuter le petit programme d'exemple il me met ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Exception in thread "main" java.lang.ExceptionInInitializerError
            at jcurses.system.InputChar.<clinit>(InputChar.java:13)
            at jcurses.widgets.Window.<clinit>(Window.java:209)
            at test.JCursesTest.main(JCursesTest.java:7)
    Caused by: java.lang.RuntimeException: couldn't find jcurses library
            at jcurses.system.Toolkit.getLibraryPath(Toolkit.java:121)
            at jcurses.system.Toolkit.<clinit>(Toolkit.java:37)
            ... 3 more
    Pourtant j'ai bien fait ce qu'il y a marquer, je ne comprend pas, il faut dire que leur doc n'est pas super bien faite pour celui qui débute avec

    Donc si quelqu'un aurait un tuto ou sait comment s'en servir je lui en serait reconnaissant de me dire comment cette librairie marche Merci d'avance.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Montre la ligne 7 de la classe JCursesTest, qu'on voie ce dont il est question

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Voici le main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class JCursesTest {
    	
    	public static void main(String[] args) {
    		/*- Main window -*/
    		StartWindow startWindow = new StartWindow();
    		
    		try {
    			startWindow.show();
    			Thread.sleep(10000);
    		} catch (InterruptedException e) {
    			e.printStackTrace();
    		} finally {
    			startWindow.close();
    		}
    	}
     
    }
    La ligne 7 est surligné en bleu. Sinon voici les deux autres classes utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    public class StartWindow extends Window implements ActionListener {
     
    	public StartWindow() {
    		super(Toolkit.getScreenWidth(), Toolkit.getScreenHeight(), true, "MyFirstApplication");
    		setShadow(false);
     
    		/*- Text label -*/
    		Label label = new Label("This application enables you to export or to validate exports\nbetween the three environments.");
     
    		/*- Buttons -*/
    		Button export = new Button("Export");
    		Button validate = new Button("Validate");
     
    		/*- Listeners -*/
    		export.addListener(this);
    		validate.addListener(this);
     
    		/*- Panels -*/
    		Panel rootPanel = getRootPanel();
    		BorderPanel buttonPanel = new BorderPanel(Toolkit.getScreenWidth(), 5);
     
    		/*- Styles -*/
    		I5Styles.styleObjects(new Object[] {this, buttonPanel, label, export, validate});
     
    		/*- Layout managers -*/
    		BorderLayoutManager rootLayoutManager = new BorderLayoutManager(); 
    		BorderLayoutManager buttonLayoutManager = new BorderLayoutManager();
    		rootPanel.setLayoutManager(rootLayoutManager);
    		buttonPanel.setLayoutManager(buttonLayoutManager);
     
    		/*- Packing -*/
    		rootLayoutManager.addWidget(label, BorderLayoutManager.CENTER, WidgetsConstants.ALIGNMENT_CENTER, WidgetsConstants.ALIGNMENT_CENTER);
    		buttonLayoutManager.addWidget(export, BorderLayoutManager.WEST, WidgetsConstants.ALIGNMENT_CENTER, WidgetsConstants.ALIGNMENT_CENTER);
    		buttonLayoutManager.addWidget(validate, BorderLayoutManager.EAST, WidgetsConstants.ALIGNMENT_CENTER, WidgetsConstants.ALIGNMENT_CENTER);
    		rootLayoutManager.addWidget(buttonPanel, BorderLayoutManager.SOUTH, WidgetsConstants.ALIGNMENT_BOTTOM, WidgetsConstants.ALIGNMENT_CENTER);
    	}
     
    	public void actionPerformed(ActionEvent event) {
    		if (event.getSource() instanceof Button) {
    			Button button = (Button) event.getSource();
    			if (button.getLabel().startsWith("Validate")) {
    				System.out.println("Validate");
    			} else {
    				System.out.println("Export");
    			}
    		}
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    public final class I5Styles {
     
    	public static final CharColor normal = new CharColor(CharColor.BLACK, CharColor.GREEN);
    	public static final CharColor revert = new CharColor(CharColor.GREEN, CharColor.BLACK);
     
    	public static void styleObject(Object obj) {
    		if (obj instanceof Window) {
    			Window w = (Window)obj;
    			w.setTitleColors(normal);
    			w.setBorderColors(normal);
    			w.getRootPanel().setColors(normal);
    			w.getRootPanel().setPanelColors(normal);
    		} else if (obj instanceof BorderPanel) {
    			BorderPanel p = (BorderPanel)obj;
    			p.setColors(normal);
    			p.setPanelColors(normal);
    			p.setBorderColors(normal);
    		} else if (obj instanceof Button) {
    			Button b = (Button)obj;
    			b.setColors(normal);
    			b.setFocusedButtonColors(revert);
    		} else if (obj instanceof Label) {
    			Label l = (Label)obj;
    			l.setColors(normal);
    		} else if (obj instanceof TextArea) {
    			TextArea t = (TextArea)obj;
    			t.setColors(normal);
    			t.setBorderColors(normal);
    			t.setCursorColors(revert);
    			t.setScrollbarColors(revert);
    			t.setTextComponentColors(normal);
    		} else if (obj instanceof TextField) {
    			TextField t = (TextField)obj;
    			t.setColors(normal);
    			t.setDelimiterColors(normal);
    			t.setCursorColors(revert);
    			t.setTextComponentColors(normal);
    		}
    	}
     
    	public static void styleObjects(Object[] objs) {
    		for (int i = 0; i < objs.length; i++) {
    			styleObject(objs[i]);
    		}
    	}
     
    }
    Voila

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Désolé, je n'avais pas regardé très loin : l'erreur était déjà postée dès le premier message.

    couldn't find jcurses library
    Il suffit d'importer la bibliothèque native JCurses ; ce que tu n'as visiblement pas fait.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Ben si parce que lorsque je fais mes imports dans eclipse il trouve bien les bytecodes .class puisqu'il me les proposes

    J'ai bien fais "clique-droit sur le projet -> propriété -> chemin de compilation Java -> onglet bibliothèque -> ajouter fichier jar externe"

    Je ne comprend vraiment pas

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Il y a deux bibliothèques à importer. Il y a d'une part jcurses.jar et d'autre part libjcurses.dll (pour windows) / libjcurses.so (pour linux). Tu n'as importé que la lib jar.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Ah d'accord et je que cette librairie .dll ou .so doit être dans le même repertoire que mon .jar de l'application test que j'ai créé ? ou alors il faut l'importer d'une façon spécial ?

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Ah ça, je ne sais pas : je n'utilise jamais les bibliothèques natives. Regarde du côté de la documentation du projet.

    Essaie de placer ce fichier dans le classpath, à côté de jcurses.jar.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par scary Voir le message
    Ah d'accord et je que cette librairie .dll ou .so doit être dans le même repertoire que mon .jar de l'application test que j'ai créé ? ou alors il faut l'importer d'une façon spécial ?
    Pour les bibliothèques natives, il faut soit :
    • mettre la dll ou le so dans le library.path de java. Pour en avoir la valeur tu peux faire ceci :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
       
      System.out.println(System.getProperty("java.library.path"));
    • assigner la variable java.library.path au répertoire contenant tes dll ou so lorsque tu lances la jvm
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
       
      java -Djava.library.path=/mon/chemin -jar toto.jar
    • Sous linux tu peux ajouter le réreptoire contenant tes so dans la variable d'enviuronnement LD_LIBRARY_PATH (mais je suis pas vraiment fan de ça, surtout ne pas écraser la valeur existante...)


    A plus
    Dernière modification par Invité ; 17/11/2009 à 10h38. Motif: faute de frappe

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Malheureusement pour moi aucune des 3 méthodes ne marchent

    Sachant que je ne peux pas faire la première car je n'ai aucun accès aux repertoires racine du système puisque les admins nous ont donné que les droits de lecture dessus.

    J'ai donc fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Djava.library.path=/auto_home/moi/lib/jcurses -jar testJcurses.jar
    Qui donne exactement le même résultat que mon premier post. J'ai donc ensuite rajouté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HOME}/lib/jcurses
    Dans mon bashrc, mais hélas toujours le même résultat

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Nous sommes bien d'accords que tu as récupéré la version pour linux et que c'est un .so, ton fichier bibliothèque ?
    Nous sommes bien d'accords également que tu utilises un linux, et que c'est un processeur x86 ou x64 ?

    Je précise parce que quand on utilise JNI, pouf, parti, le déploiement identique sur chaque plate-forme.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bon donc après avoir lu le fichier readme de jcurses on voit :
    a) You must use JDK ab 1.2
    b) A curses implementation must be installed, if it is a UNIX OS
    c) The jcurses.jar must be in the CLASSPATH
    d) the shared library must be in the same directory as jcurses.jar
    As tu installé curses sur ta machine (ou l'admin l'a-t-il fait), et donc en effet il faut avoir le .so dans le même répertoire que le jar (tu peux laisser tomber le library.path donc normalement). La grande question est : est-ce que tu as une implémentation de curses installée sur la machine ?

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Nous sommes bien d'accords que tu as récupéré la version pour linux et que c'est un .so, ton fichier bibliothèque ?
    Oui

    Citation Envoyé par thelvin Voir le message
    Nous sommes bien d'accords également que tu utilises un linux, et que c'est un processeur x86 ou x64 ?
    Oui

    Citation Envoyé par George7 Voir le message
    La grande question est : est-ce que tu as une implémentation de curses installée sur la machine ?
    Oui aussi car voici ce qui est installé sur ncurse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    >>locate ncurses
    /opt/epd_py25-4.3.0/include/ncurses
    /opt/epd_py25-4.3.0/include/ncurses/eti.h
    /opt/epd_py25-4.3.0/include/ncurses/form.h
    /opt/epd_py25-4.3.0/include/ncurses/menu.h
    /opt/epd_py25-4.3.0/include/ncurses/nc_tparm.h
    /opt/epd_py25-4.3.0/include/ncurses/ncurses.h
    /opt/epd_py25-4.3.0/include/ncurses/ncurses_dll.h
    /opt/epd_py25-4.3.0/include/ncurses/panel.h
    /opt/epd_py25-4.3.0/include/ncurses/term.h
    /opt/epd_py25-4.3.0/include/ncurses/term_entry.h
    /opt/epd_py25-4.3.0/include/ncurses/termcap.h
    /opt/epd_py25-4.3.0/include/ncurses/tic.h
    /opt/epd_py25-4.3.0/include/ncurses/unctrl.h
    /opt/epd_py25-4.3.0/lib/libncurses.a
    /opt/epd_py25-4.3.0/lib/libncurses.so
    /opt/epd_py25-4.3.0/lib/libncurses.so.5
    /opt/epd_py25-4.3.0/lib/libncurses.so.5.7
    /opt/epd_py25-4.3.0/lib/libncurses_g.a
    /opt/epd_py25-4.3.0/man/man3/ncurses.3x.gz
    /usr/lib/libncurses.so
    /usr/lib/libncurses.so.5
    /usr/lib/libncurses.so.5.5
    /usr/lib/libncursesw.so
    /usr/lib/libncursesw.so.5
    /usr/lib/libncursesw.so.5.5
    /usr/share/doc/ncurses-5.5
    /usr/share/doc/ncurses-5.5/ANNOUNCE
    /usr/share/doc/ncurses-5.5/README
    /usr/share/doc/ncurses-5.5/announce.html
    /usr/share/systemimager/boot/i386/standard/initrd_template/lib/libncurses.so.5
    /usr/share/systemimager/boot/i386/standard/initrd_template/lib/libncursesw.so.5

Discussions similaires

  1. Problème utilisation DLL
    Par Tub-95 dans le forum MFC
    Réponses: 4
    Dernier message: 02/11/2005, 12h00
  2. [Tomcat][Spring] Problème utilisation mémoire
    Par Wutintin dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/09/2005, 14h57
  3. [JSTL] [EL] Problème utilisation <c:out>
    Par XavierL dans le forum Taglibs
    Réponses: 7
    Dernier message: 14/08/2005, 20h12
  4. (Problème) Utilisation de l'API mySQL [Delphi 2005 Perso]
    Par will-scs dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/08/2005, 18h26
  5. [JAR]Problème utilisation manifest et jar
    Par doudine dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/01/2005, 10h21

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