当前位置: 首页 > 知识库问答 >
问题:

ClassCastException-客户和Customerservice是否在loader应用程序的未命名模块中?

黎苑博
2023-03-14

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

线程“main”java中出现异常。lang.ClassCastException:class com。r00107892。银行领域无法将客户强制转换为com类。r00107892。银行服务。CustomerService(com.r00107892.bank.domain.Customer和com.r00107892.bank.services.CustomerService位于加载器“应用程序”的未命名模块中)位于com。r00107892。银行主应用程序。main(MainApp.java:24)

我已经检查过我的客户了。爪哇,顾客道。java,CustomerDAOImpl。java,CustomerService。java,CustomerServiceImpl。java、我的mainApp和我的BeanConfig。java和我找不到问题。

我更改了我的BeanConfig,以便它不再显式地将客户命名为Bean,而是使用ComponentScan。

主控制程序

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

顾客JAVA

@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;

}

客户服务

@Service
public interface CustomerService {

    Customer getCustomerByAccountNumber(int accountNumber);

}

CustomerServiceImpl

public class CustomerServiceImpl implements CustomerService {

    @Autowired
    CustomerDAO customerDao;


    public Customer getCustomerByAccountNumber(int accountNumber) {
        return customerDao.findById(accountNumber);
   }

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

共有1个答案

白淇
2023-03-14

应该是:

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

您没有为bean指定名称,因此默认情况下它将使用类名。bean是客户服务,而不是客户(我想你的意思是这是一个实体?)

 类似资料:
  • 问题内容: 我已经将网站托管在本地服务器上,并且该网站可以由多个本地用户访问,并且当他们尝试访问Java代码时,我希望当他们访问特定页面时获得访问此页面的客户端/用户的os用户: 它获取服务器而不是客户端的操作系统用户名。 请告知如何完成该任务,谢谢。 问题答案: 使用java方法就可以了。

  • 我不知道我做错了什么。我试图实现Jwt令牌(仅post方法)。它显示了 路径为[]的上下文中servlet[dispatcherServlet]的servlet.Service()引发异常[请求处理失败;嵌套异常为java.lang.ClassCastException:类com.vivek.Discussion.Service.UserDetailServiceImpl$1不能强制转换为类com

  • 问题内容: 我知道这个问题已经被问过多次了。我已经阅读了所有内容,但无法解决问题。以下是我的目录结构。 在main.py中,我将导入以下内容。 当我在Windows中执行代码时,它工作得很好。但是在Linux中,出现以下错误。 我还阅读了有关模块和包的官方python文档。 问题答案: 您的包裹结构还可以。您的导入声明很好。唯一缺少的是该软件包在中是可见的,该位置是可以解析import语句的位置列

  • 问题内容: 我找不到与Python 3.1兼容的软件。对于使用WSDL的Python 3 SOAP客户端模块/库有什么建议吗? 问题答案: 您可以移植自己喜欢的现有库,并将更改提供给包的作者。

  • 我正在编写一个客户机-服务器应用程序,但在使用命令模式时遇到了问题。在我的程序中,服务器从客户端接收字符串输入命令,在HashMap中为输入找到合适的命令,执行它并返回返回值。我在弄清楚如何编写需要不止一步的命令时遇到了问题(命令必须要求客户机提供额外的参数,然后应该返回最终结果)。 命令界面 服务器与客户端的通信 一步到位,毫无问题 我不知道如何编写一个命令,它需要一个额外的参数来执行,它不能在

  • 我想执行GET请求: 当我试图捕获我的HTTPResponse