Quelle est la cause de cette erreur Java «Impossible de trouver le symbole»?

Je modifie le code hérité et continue de recevoir une erreur bizarre “impossible de trouver le symbole” qui me rejette.

//======= Error ========= Compiling 1 source file to /Users/Inprimus/Projects/Workspace/Soft/build/web/WEB-INF/classes /Users/Inprimus/Projects/Workspace/Soft/WebContent/WEB-INF/classes/fr/service/CarPeer.java:49: cannot find symbol symbol : method addCarToCompany(java.lang.Long,fr.model.company.Car) location: class fr.dao.CompanyDAO cmpDAO.addCarToCompany(idCompany,car); ^ 1 error 

Voiture pair:

 package fr.service; import fr.model.company.Car; import fr.dao.CompanyDAO; import fr.dao.CarDao; public class CarPeer { private static CarDao carDAO= new CarDao(); private static CompanyDAO cmpDAO = new CompanyDAO(); public static void storeCar(Long idCompany, Car car) throws UserServiceException, Exception { try { cmpDAO.addCarToCompany(idCompany,car); System.out.println("Car stored : "+car.toSsortingng()+" in "+idCompany); carDAO.storeCar(car); } catch(DAOException ex) { throw new UserServiceException(ex.getMessage(), ex); } } } 

SociétéDao:

  package fr.dao; import fr.model.accounting.Cost; import fr.model.company.Car; public class CompanyDAO extends GenericDAO { private enum ChildType { COST{ public void addChildToCompany(Company company, Object child) { company.addCost((Cost)child); } }, CAR{ public void addChildToCompany(Company company, Object child) { company.addCar((Car)child); } }; public abstract void addChildToCompany(Company company, Object child); } private void addChildToCompany(Long idCompany, Object child, ChildType type) throws NotFoundDAOException, AlreadyExistDAOException, Exception { try { // Begin unit of work Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Company company = (Company) session.load(Company.class, idCompany); type.addChildToCompany(company, child); session.flush(); // End unit of work session.getTransaction().commit(); } catch (ObjectNotFoundException ex) { HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().rollback(); throw new NotFoundDAOException("Identified object " + idCompany + " doesn't exist in database", ex); } catch (ConstraintViolationException ex) { HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().rollback(); throw new AlreadyExistDAOException("The new identity already exsits in database", ex); } catch (Exception ex) { ex.printStackTrace(); HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().rollback(); throw new Exception(ex); } } public CompanyDAO() { super(Company.class); } public void addCarToCompany(Long idCompany, Car car) throws NotFoundDAOException, AlreadyExistDAOException, Exception { addChildToCompany(idCompany, car, ChildType.CAR); } } 

J’ai vérifié trois fois mais je n’ai rien trouvé de mal avec le code jusqu’à présent. Je le construis dans Netbeans 7.0.1.Je dois mentionner que je reçois cette erreur lorsque je construis, mais je peux exécuter l’application Web sans aucun problème (pour le moment). Mais je crains que cela ne vienne mordre dans le dos.


Je viens de remarquer dans l’arborescence de fichiers qu’au-dessus des classes CompanyDAO se trouvaient des fichiers portant le même nom, au format suivant: CompanyDAO $ ChildType # .class (# correspond à un nombre). type enfant j’ai ajouté. Comment puis-je effectuer cela?

Est-ce que CompanyDao est compilé et disponible sur le classpath avant CarPeer?

Il est fort probable que vous utilisiez un fichier de classe précédemment compilé (sans méthode) dans votre chemin de classe et que le système tente de l’utiliser à la place de votre code source actuel.

Sinon, nettoyez votre espace de travail, ne dépendez pas des compilations existantes et réessayez. Cela m’est arrivé dans le passé.

Je continue à avoir le même problème (bien que je ne sache pas si c’est pour la même raison). Pour moi, la seule chose qui fonctionne (mis à part l’abandon de cet IDE “robuste”) est de supprimer le cache. Sous Windows, il se trouve dans %UserProfile%\.netbeans\7.0\var\cache . Je suppose que sur * nix, cela pourrait être sous ~/.netbeans/7.0/var/cache . Vous devez d’abord quitter NetBeans, supprimer le cache, puis redémarrer NetBeans.

Nettoyez et construisez votre projet. Si cela ne fonctionne pas, redémarrez Netbeans. Parfois, Netbeans donne des erreurs étranges et un redémarrage complet de Netbeans et / ou d’un ordinateur semble simplement résoudre ces problèmes inexplicables.

Lorsque vous utilisez Netbeans 7.2+, procédez comme suit:

  • Fermez tous les tabs et quittez Netbeans.
  • Supprimez le répertoire de cache: ~ / .cache / netbeans / VERSION. Où VERSION est la version Netbeans, c’est-à-dire 7.3.1
  • Redémarrez Netbeans et “Clean & Build”

Voir aussi Comment effacer le cache dans NetBeans

Cela peut être dû au fait que l’instance Netbeans actuelle que vous exécutez utilise le cache précédemment construit lors de son initialisation. Ainsi, pour vider le cache Netbeans, vous pouvez exécuter l’une des deux étapes mentionnées ci-dessous.

APPROCHE 1
1. Cliquez avec le bouton droit sur le nom de votre projet dans Netbeans dans l’onglet Projets.
2. cliquez sur l’option nettoyer et construire .
3. La mémoire cache a été effacée.

APPROCHE 2
1. Cliquez sur “clé Windows + R” et tapez “% UserProfile% / appdata / local / netbeans”.
2. Accédez au dossier de cache, puis au dossier portant le nom spécifiant la version de Netbeans.
3. Fermez Netbeans et supprimez tous les fichiers présents dans le dossier.
4. Redémarrez les netbeans et vous pourrez maintenant voir le nom de la classe.

Si l’une de ces méthodes ne fonctionnait pas, il se peut que votre chemin d’access aux classes ne soit pas correct.