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

Langage Java Discussion :

erreur au lancement du programme


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut erreur au lancement du programme
    bonjour, je debute en Java et je dois debugger un programme , je l'ai fait, je n'ai plus d'erreur de compil mais j'ai une erreur au lancement et je n'arrive pas a comprendre pourquoi :

    java.lang.NoSuchMethodError: main
    Exception in thread "main"


    voici mon code :

    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
    public class Box
    {
    	private int width;
    	private int height;
    	private int depth;
     
    	public Box (int w, int h , int d)
    	{
    		width = w ;
    		height = h ;
    		depth = d ;
    	}
     
    	public int getHeight()
    	{
    		return height;
    	}
     
    		public int getWidth()
    	{
    		return width;
    	}
    		public int getDepth()
    	{
    		return depth;
    	}
     
    	public int calculateVolume()
    	{
    		return height*width*depth;
    	}
     
    	public void main ( String args[])
    	{
    		Box myBox = new Box(1, 1, 1);
    		System.out.print(calculateVolume());
     
    	}
    }
    Pouvez vous me dire ou est le probleme svp ?

    merci d'avance

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    ta méthode main doit être static

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    ok , j'ai declaré ma methode en statique ( pourquoi au fait?? )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public static void main ( String args[])
    	{
    		Box myBox = new Box(1, 1, 1);
    		System.out.print(calculateVolume());
     
    	}
    mais maintenant j'ai une erreur de compilation :

    Box.java:42: non-static method calculateVolume() cannot be referenced from a static context
    System.out.print(calculateVolume());


    Je comprends pas de trop cette histoire de static et non statique methode

    Merci encore pour votre aide !!

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Une méthode ou une propriété statique s'applique à la classe et non à une instance de classe.
    La méthode main doit être statique, c'est la règle.
    Une méthode statique ne peut accéder qu'à des données statiques, donc ta méthode calculateVolume doit aussi être statique.

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    merci, je comprends le principe mais si je mets la methode calculateVolume en static , j'ai une autre erreur et je ne vois pas d'ou ca vient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	public static calculateVolume()
    	{
    		return height*width*depth;
    	}
    Box.java:34: invalid method declaration; return type required
    public static calculateVolume()


    merci encore , ca va venir je le sens

  6. #6
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 125
    Points : 140
    Points
    140
    Par défaut
    Bonjour,
    donc ta méthode calculateVolume doit aussi être statique
    pas nécessairement.

    Il a déclaré un objet Box et sa méthode calculateVolume est une méthode de la classe Box.
    De plus,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public int calculateVolume()
    	{
    		return height*width*depth;
    	}
    je suppose qu'il veut calculer le volume de l'objet Box en question.

    Il suffit donc de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myBox.calculateVolume();

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Le plus simple serait encore de ne pas mettre ta méthode calculateVolume en static et d'ecrire dans ton main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Box myBox = new Box(1, 1, 1);
    System.out.print(myBox.calculateVolume());

  8. #8
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 125
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Le plus simple serait encore de ne pas mettre ta méthode calculateVolume en static et d'ecrire dans ton main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Box myBox = new Box(1, 1, 1);
    System.out.print(myBox.calculateVolume());
    C'est ce que j'ai dit.

  9. #9
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    C'est bien.

    Tu t'es pas dit que peut-être j'étais en train d'écrire mon message quand tu as envoyé le tien ?

  10. #10
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    oui c'est ce que je viens de faire et ca marche !!

    merci beaucoup de votre aide !!!!

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

Discussions similaires

  1. Erreur au lancement de programme: java.lang.ClassCastException
    Par wilfryjules dans le forum Général Java
    Réponses: 16
    Dernier message: 05/07/2011, 18h16
  2. Erreur au lancement du programme
    Par Falcor dans le forum Ogre
    Réponses: 1
    Dernier message: 24/05/2008, 14h04
  3. Erreur au lancement du programme
    Par tazamorte dans le forum MFC
    Réponses: 4
    Dernier message: 08/09/2006, 18h41
  4. Delphi 2005 Indy 9 Erreur au lancement du programme
    Par Houben Jacques dans le forum Web & réseau
    Réponses: 4
    Dernier message: 08/11/2005, 12h05
  5. [TP] Erreur au lancement d'un programme PASCAL
    Par rogerone dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 18/08/2005, 15h54

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