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

avec Java Discussion :

Static / non static Utilisation Java


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Points : 114
    Points
    114
    Par défaut Static / non static Utilisation Java
    Salut!
    j'ai un souci avec mon programme...et je me suis apercue que j'ai une grosse confusion entre static/non static et son utilisation...

    Dans une classe (public pas statique) je declare une fonction getExemple.
    Je veut appeler cette fonction 2 fois. Une fois, dans une autre fonction de la même classe. Una autre fois dans une autre classe (different package).

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    package a;
    public class Exemple1{
       public static int getExemple(int a){... }
       protected void saveExemple(){
          int varExemple = getExemple(5);
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    package b;
    import a.Exemple1;
    public class Exemple2 extend Exemple3{
       private void checkExemple(int b){
          int varExemple = Exemple1.getExemple(6);
       }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class Exemple3 extends Thread{...}
    Si j'execute ce code j'obtien l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     INFO  b  Exemple3 exiting
    Exception in thread "Thread-5" java.lang.NoClassDefFoundError: javax/faces/application/FacesMessage
    Et mon code bloque juste à l'appelle de la fonction getExemple() dans Exemple2...
    d'où ça vient cette erreur? Je code correctement? j'ai aussi essayé d'enlever le static et de créer les istances...mais rien..

  2. #2
    Membre habitué
    Avatar de benjamin_musique
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 54
    Points : 182
    Points
    182
    Billets dans le blog
    1
    Par défaut
    Salut
    lis bien ton message d'erreur : java.lang.NoClassDefFoundError.
    Cela veut dire que l'environnement d'exécution Java n'arrive pas à trouver la classe : javax.faces.application.FacesMessage

    Cela n'a absolument rien à voir avec des erreurs sur l'appel de méthodes statiques ou d'instance, qui auraient sans doute été détectées par le compilateur. Il te manque simplement les fichiers jar JSF dans le classpath de ton environnement d'exécution.

    Du coup pour t'aider il faut que tu précises ton environnement de développement (Eclipse? Netbeans?) et d'exécution (Tomcat? Websphere?).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Points : 114
    Points
    114
    Par défaut
    Merci pour la réponse.

    je travail avec Eclipse 3.4.1 etTomcat.
    Mail alors pourquoi le programme s'arrête juste sûr cette fonction? Maintenant j'ai copié la fonction dans la deuxième classe. Et je l'appelle simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int varExemple = getExemple(6);
    .
    Mais comme ça ce n'est vraiment pas joli!! j'ai la fonction en double maintenant...mais ç'a l'aire de fonctionner...

    Mais alors c'est quoi cette classe? Je peut la touver/ajouter où?

    merci beaucoup pour l'aide!

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Points : 151
    Points
    151
    Par défaut
    Bonjour,
    Citation Envoyé par Bobble Voir le message
    Merci pour la réponse.

    je travail avec Eclipse 3.4.1 etTomcat.
    Mais alors c'est quoi cette classe? Je peut la touver/ajouter où?
    Tu travailles certainement sur une application web.
    JSF, JBOSS SEAM ou autre ?
    La classe FacesMessage peut venir de la ? Quelque part dans ton appli tu en fais appel et très certainement le fichier jar n'est pas au bon endroit ou n'est pas présente.
    Elle est appelée avant ta méthode.
    Cordialement

  5. #5
    Membre habitué
    Avatar de benjamin_musique
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 54
    Points : 182
    Points
    182
    Billets dans le blog
    1
    Par défaut
    Pour compléter, ça pète au premier appel à la classe Exemple1. Je pense que dans le code de Exemple1 tu as un import d'une classe JSF (javax.faces....).
    Est-ce que tu comptes utiliser JSF dans ton application? D'après ton post je n'ai pas l'impression.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Points : 114
    Points
    114
    Par défaut
    Oui, j'utilise JSF dans mon application, notamment la fonction saveExemple().
    Mais ni checkExemple, ni getExemple l'utilisent.

    Effectivement je n'ai pas encore essayé à appeler saveExemple.
    Si j'ai bien comprit, maintenant ça fonctionne car je n'appelle pas la classe Exemple1 mais je suis uniquement en Exemple2...

    Je vais faire de recherches de mon côté (tester Exemple2 et chercher le fichier manquant).

    Je vous redis dés que j'ai des nouvelles.
    Merci encore pour l'aide!

  7. #7
    Membre confirmé Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Points : 558
    Points
    558
    Par défaut
    Petite précision : ne pas confondre les exceptions suivantes :
    - ClassNotFoundException (la classe en question n'est pas chargé, par exemple aucune lib ne la contient)
    - NoClassDefFoundError (La classe est bien chargé par le serveur d'application (ou n'importe quel appli java) mais n'est pas accessible avec le classloader courant). Cette erreur est plus délicate à corriger, il s'agit souvent de déplacer une librairie pour qu'elle soit chargé par le bon classloader.

    C'est une erreur que l'on rencontre fréquemement lorsque en déployant des applications assez complexe sur un serveur d'application. Au fil de mes expériences, j'ai réussis a bien comprendre le problème mais j'ai encore du mal à l'expliquer. Donc ne m'en voulez pas trop si ce n'est pas très clair.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Points : 114
    Points
    114
    Par défaut
    Merci Mobius pour ta réponse précise. Je savais qu'il y avait une différence mais maintenant je comprends mieux.
    Effectivement application sur laquelle je travail est complexe...

    Comme j'ai dit, maintenant j'ai copié la fonction dans la deuxième classe...c'est bien dégueulasse mais au moins ça fonctionne... (J’ai testé les deux classes)

    Je pense alors que ma classe Exemple2 ne trouve effectivement pas cette classe vu qu'elle n'a rien à voir avec la partie JSF... et du moment que j'essaye de la "lier" avec une partie JSF ça ne joue plus...

    Je vais essayer de chercher cette librairie alors...et m'informer un peut sur les classloader.

    Merci à tout le monde

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

Discussions similaires

  1. Utiliser une méthode non-static dans une méthode static
    Par mcfly37 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/08/2010, 11h41
  2. ArrayList static non static
    Par Team2009 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 23/05/2010, 22h23
  3. appel static/non static
    Par greg08 dans le forum Langage
    Réponses: 3
    Dernier message: 27/11/2008, 10h25
  4. Pb de fonction ( static / non static )
    Par Luffy49 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/05/2007, 13h28
  5. static / non-static ???
    Par benkunz dans le forum Langage
    Réponses: 4
    Dernier message: 05/04/2006, 09h49

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