Estoy modificando el código heredado y sigo recibiendo un extraño error de "no puedo encontrar el símbolo" que me está arrojando.¿Qué causa este error de Java "No se puede encontrar el símbolo"?
//======= 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
pares Coche:
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.toString()+" in "+idCompany);
carDAO.storeCar(car);
} catch(DAOException ex) {
throw new UserServiceException(ex.getMessage(), ex);
}
}
}
CompanyDao:
package fr.dao;
import fr.model.accounting.Cost;
import fr.model.company.Car;
public class CompanyDAO extends GenericDAO<Company> {
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);
}
}
triples He comprobado pero no puedo encontrar nada malo con el código hasta el momento. Lo estoy construyendo en Netbeans 7.0.1. Debo mencionar que recibo este error cuando construyo, pero puedo ejecutar la aplicación web sin ningún problema (todavía). Pero estoy preocupado de que esto pueda volver a morder el trasero.
acabo de notar en el árbol de archivos que por encima de las clases CompanyDAO son archivos con nombres similares que llevan el formato: CompanyDAO $ ChildType # .class (# corresponde a un número) supongo que no ha re- compiló la clase para generar el niño adicional que agregué. ¿Cómo puedo afectar esto?
¿Intentó limpiar el proyecto/realizar una reconstrucción completa? – solendil
¿Has probado una compilación limpia? ¿Tiene un jar u otra carpeta en classpath que también podría tener una copia de las clases de CompanyDAO? – gkamal