gpt4 book ai didi

java - 是什么导致了这个 Java "Cannot find symbol"错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:23 28 4
gpt4 key购买 nike

我正在修改继承的代码并不断收到奇怪的“找不到符号”错误,这让我很不爽。

   //======= 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

汽车同行:

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);
}
}
}

公司道:

   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);
}
}

我已经进行了三重检查,但到目前为止没有发现代码有任何问题。我正在 Netbeans 7.0.1 中构建它。我应该提到我在构建时遇到了这个错误,但我可以毫无问题地运行 Web 应用程序(目前)。但我担心这可能会反过来咬人。


我刚刚在文件树中注意到,在 CompanyDAO 类上方是类似命名的文件,格式如下:CompanyDAO$ChildType#.class(# 对应于一个数字)我猜它没有重新编译该类生成我添加的额外子类型。我怎样才能做到这一点?

最佳答案

很可能您在您的类路径中使用了一个以前编译的类文件(它没有方法),而系统正在尝试使用它而不是您当前的源代码。

否则,请清理您的工作区,不要依赖现有的编译并重试。这在我过去发生过。

关于java - 是什么导致了这个 Java "Cannot find symbol"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8298854/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com