ClassCastException - Клиент и Служба поддержки клиентов находятся в безымянном модуле приложения-загрузчика?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 ClassCastException - Клиент и Служба поддержки клиентов находятся в безымянном модуле приложения-загрузчика?

Сообщение Anonymous »

Я пытаюсь вызвать свой клиентский компонент в своем основном приложении, чтобы проверить правильность настройки моего компонента (я вижу, как они создаются), и получаю следующую ошибку:


Исключение в потоке «main» java.lang.ClassCastException: class
com.r00107892.bank.domain.Customer не может быть приведен к классу
com.r00107892 .bank.services.CustomerService
(com.r00107892.bank.domain.Customer и
com.r00107892.bank.services.CustomerService находятся в безымянном модуле
загрузчика 'app') по адресу com. .r00107892.bank.MainApp.main(MainApp.java:24)


Я проверил свой Customer.java, CustomerDAO.java, CustomerDAOImpl.java, CustomerService.java, CustomerServiceImpl.java, мое основное приложение и мой BeanConfig.java, и я не могу найти проблему.

Я изменил свой BeanConfig, так что он больше не называет Customer явно как 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();
}
}
Customer.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 (уже есть в базе данных) будет распечатано.

Подробнее здесь: https://stackoverflow.com/questions/587 ... e-of-loade
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»