Erreur de compilation Java cannot find symbol

Résolu/Fermé
mickeynad Messages postés 18 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 15 juillet 2010 - 6 déc. 2009 à 17:29
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 6 janv. 2016 à 14:59
Bonjour,

J'en appelle à votre aide. J'ai fait un petit logiciel en java de gestion des pièces automobiles qui est constitué de 6 classes (héritage simple):
-une classe abstraite Piece (classe mère);
-Deux classes qui sont une extension de la classe Piece:
*PieceDeBase;
*PieceComposite (classe abstraite);
-Deux classes qui sont une extension de la classe PieceComposite:
*PieceCompositeEnKit;
*PieceAssemblee;
-Une classe MainPiece qui est une application de toutes ces 5 classes.

Les 6 classes sont dans le meme répertoire Pieces.

Lorsque je compile la super classe Piece, tout va bien, j'ai aucune erreur. Par contre, lorsque je compile les sous classes, j'ai une erreur du genre:

PieceDeBase.java:7: cannot find symbol
symbol: class Piece
public class PieceDeBase extends Piece
^
PieceDeBase.java:37: cannot find symbol
symbol : variable super
location: class Prog.Pieces.PieceDeBase
{return super.toString()+"-de base-";}


Ce sont les seules erreurs que j'ai pour toutes mes classes.

Voici ma classe Piece:

 Code:

 package Prog.Pieces;

import java.util.*;
import java.io.*;

public abstract class Piece
{
//Attributs----------------------------------------------------------------------------------

 protected String nom;
 protected String referenceDeBase;

//Constructeurs------------------------------------------------------------------------------
 
Piece()
  {nom="inconnu"; referenceDeBase="000000";}
 
Piece(String n, String r)
  {nom=n; referenceDeBase=r;}

//Accesseurs---------------------------------------------------------------------------------
public String getNom() {return nom;}
public void setNom(String n) {nom=n;}

public String getReferenceDeBase() {return referenceDeBase;}
public void setReferenceDeBase(String r) {referenceDeBase=r;}

//Autres methodes----------------------------------------------------------------------------

public String toString()
{return nom+" "+getReferenceDeBase();}

abstract public float prix();

abstract public float dureeGarantie();

abstract public float dureeFabrication();

abstract public String prefixe();

public String referenceDeBase() {return referenceDeBase;}

public void affiche()
  {
   System.out.println("Nom : "+getNom()+"\n"+
                      "Reference : "+referenceDeBase()+"\n"+
                      "Prix : "+prix()+"euro(s)\n"+
                      "Garantie : "+dureeGarantie()+"mois\n"+
                      "Duree de fabrication : "+dureeFabrication()+"jour(s)\n");
  }

//Partie protegee----------------------------------------------------------------------------

protected String afficheCommeComposants(int decalage)
  {
   String Decale="";
   for (int i=0; i<decalage; i++)
   Decale +="    ";
   return Decale+nom+" - "+referenceDeBase()+"\n";
  }

}


Et voici ma classe PieceDeBase (pour ne vous citer que celles la):

 package Prog.Pieces;

import java.util.*;
import java.io.*;

public class PieceDeBase extends Piece
{
//Attributs-----------------------------------------------------------------

 private float prix;
 private float dureeGarantie;
 private float dureeFabrication;

//Constructeurs-------------------------------------------------------------

 PieceDeBase()
 {prix=0; dureeGarantie=0; dureeFabrication=0;}

 PieceDeBase(String n, String r, float p, float dg, float df)
  {super(n,r); prix=p; dureeGarantie=dg; dureeFabrication=df;}

//Accesseurs----------------------------------------------------------------
 
 public float getPrix() {return prix;}
 public void setPrix(float p) {prix=p;}
 
 public float getDureeGarantie() {return dureeGarantie;}
 public void setDureeGarantie(float dg) {dureeGarantie=dg;}

 public float getDureeFabrication() {return dureeFabrication;}
 public void setDureeFabrication(float df) {dureeFabrication=df;}

//Autres methodes-----------------------------------------------------------
 
 public String toString()
   {return super.toString()+"-de base-";}

 public float prix() {return prix;}
 
 public float dureeGarantie() {return dureeGarantie;}

 public float dureeFabrication() {return dureeFabrication;}

 public String prefixe() {return "00"+super.reference();}

}



Est-ce une erreur de mon classpath ou de mon code?
Je comprends vraiment rien, mon code me semblait juste pourtant.
Si vous pouviez m'aider, je vous en serais très reconnaissante.
Cordialement.
A voir également:

13 réponses

mickeynad Messages postés 18 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 15 juillet 2010 8
8 déc. 2009 à 17:17
Naturellement,

Il ne s'agissait donc pas d'erreurs dans mon code java mais bel et bien de commandes via le terminal.
Alors pour ceux qui ont les mêmes erreurs de compilation dans un cas d'héritage simple, vous devez compilez vos super classes et sous classes en même temps et une seule fois par :

javac SuperClasse.java SousClasse1.java SousClasse2.java


Dans mon cas, c'était:

javac Piece.java PieceDeBase.java PieceComposite.java PieceCompositeEnKit.java PieceAssemblee.java MainPiece.java


Voila, pour moi ça a super bien marché et tout s'exécute parfaitement.

@+
7