Devralınan kodu değiştiriyorum ve beni tutacak bir tuhaf "sembolü bulamıyor" hatasını alıyorum.Bu Java'ya neden "Sembol bulamıyor" hatası?
//======= 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
Araç akran:
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);
}
}
Üçlü kontrol ettiniz ama şimdiye kadar koduyla yanlış bir şey bulamıyorum. Bunu Netbeans 7.0.1'de yapıyorum. Oluşturduğumda bu hatayı aldığımı belirtmeliyim, ancak web uygulamasını herhangi bir sorun olmadan çalıştırabilirim (henüz). Ama endişeliyim ki bu arkada ısırmak için geri gelebilir.
Sadece CompanyDAO sınıfları Yukarıdaki biçimi taşıyan benzer şekilde adlandırılmış dosyaları dosya ağacında fark: CompanyDAO $ ChildType # .class (# bir sayıya tekabül eder) Ben yeniden henüz tahmin ediyorum Ekstra tipte çocuk üretmek için sınıfı derledim. Bunu nasıl etkileyebilirim?
Projeyi temizlemeye/tam bir yeniden oluşturma mı denediniz? – solendil
Temiz bir yapıyı denediniz mi? Ayrıca ClassAnd içinde CompanyDAO sınıflarının bir kopyasına sahip olabilecek bir kavanoz veya başka bir klasör var mı? – gkamal