ClassCastException-客户和客户服务是否在加载器应用的未命名模块中?

我试图在主应用程序中调用客户Bean来测试我的Bean设置正确(我可以看到它们正在创建),并且出现以下错误:

  

线程“主”中的异常java.lang.ClassCastException:类   com.r00107892.bank.domain.Customer无法转换为类   com.r00107892.bank.services.CustomerService   (com.r00107892.bank.domain.Customer和   com.r00107892.bank.services.CustomerService位于的未命名模块中   com.r00107892.bank.MainApp.main(MainApp.java:24)中的加载程序“ app”)

我已经检查了Customer.java,CustomerDAO.java,CustomerDAOImpl.java,CustomerService.java,CustomerServiceImpl.java,mainApp和Beanconfig.java,但找不到问题。

我更改了Beanconfig,使其不再将Customer明确命名为Bean,而是使用ComponentScan。

MainApp

sql = "SELECT * FROM ArtistDetails"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
    print(f"<option>{x[1]}</option>")
print("""
</select>
<br>
""")

Customer.java

@Configuration
public class MainApp {

    public static void main(String[] args) {
    AnnotationconfigApplicationContext  context= new 
AnnotationconfigApplicationContext (Beanconfig.class);

        System.out.println("Bean names: " + Arrays.toString(context.getBeanNamesForType(Beanconfig.class)));

        CustomerService customerService = (CustomerService) context.getBean("customer");

System.out.println(customerService.getcustomerByaccountNumber('1'));

        context.close();
    }
    }

CustomerService

@Component
public class Customer{
public String name;
public int account;


public Customer() {

}

public Customer(int account,String name){

}

public String getName() {
    return name;

}

public void setName(String name) {
    this.name=name;
}

public int getaccount() {
    return account;
}

public void setaccount(int account) {
    this.account = account;
}

public void myDetails() {
    System.out.println("My name is "+ this.name);
    System.out.println("My name is" + this.account);
    }

public String toString(String name,int account) {
    String sentence = name + " " + account;
    return sentence;

}

CustomerServiceImpl

@Service
public interface CustomerService {

    Customer getcustomerByaccountNumber(int accountNumber);

}

我希望看到第1号帐户(已经在数据库中)的客户名称被打印出来。

sdwdwz 回答:ClassCastException-客户和客户服务是否在加载器应用的未命名模块中?

应为:

CustomerService customerService = (CustomerService) context.getBean("customerService");

您没有为bean分配名称,因此默认情况下它将使用类名称。 Bean是customerService,而不是customer(我假设您是说这是一个实体?)

本文链接:https://www.f2er.com/3127312.html

大家都在问