Java.lang.NullPointerException: невозможно вызватьController.addFlight()", поскольку значение контроллера равно нулю ⇐ JAVA
Java.lang.NullPointerException: невозможно вызватьController.addFlight()", поскольку значение контроллера равно нулю
Я столкнулся с исключением нулевого указателя. Можете ли вы помочь мне объяснить, в чем проблема и что я делаю неправильно. Простите за грубое кодирование, я новичок.
Это ошибка:
Исключение в потоке «main» java.lang.NullPointerException: невозможно вызвать «com.org.Controller.Controller.addFlight()», потому что «com.org.App.controller» нулевой на com.org.App.main(App.java:22)
Это классы:
Приложение
пакет com.org; импортировать com.org.Config.AppConfig; импортировать com.org.Controller.Controller; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.context.ApplicationContext; импортировать org.springframework.context.annotation.AnnotationConfigApplicationContext; импортировать java.util.Scanner; приложение общедоступного класса { @Autowired общедоступный статический контроллер контроллера; public static void main(String[] args) { System.out.println("Здравствуйте, добро пожаловать в авиакомпанию AirGO"); System.out.println("Пожалуйста, выберите, что вы хотите сделать"); System.out.println("1.Добавить рейс:"); System.out.println("2.Поиск рейса"); Сканер-сканер = новый сканер(System.in); Целочисленный userChoice= Scanner.nextInt(); если (1==Выбор пользователя){ контроллер.addFlight(); } else if (2==userChoice) { контроллер.showFlight(); } еще System.out.println("Пожалуйста, введите действительные данные"); } } Контроллер //Фальшивый класс контроллера
пакет com.org.Controller; импортировать com.org.Config.AppConfig; импортировать com.org.Domain.Flight; импортировать com.org.Service.FlightServiceImpl; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.context.ApplicationContext; импортировать org.springframework.context.annotation.AnnotationConfigApplicationContext; импортировать org.springframework.stereotype.Component; импортировать java.time.LocalDate; @Компонент Контроллер публичного класса { @Autowired FlightServiceImpl FlightService = новый FlightServiceImpl (); общественная недействительность addFlight () { новый AnnotationConfigApplicationContext(AppConfig.class); Полет полет = новый полет (); Flight.setAirlines("Индиго"); Flight.setSource("Индия"); Flight.setDestination("Япония"); Flight.setFare(50456.54); LocalDate date = LocalDate.now(); Flight.setJourneyDate(дата); рейс.setSeatCount(2); FlightService.addFlight(полет); } общественная недействительность showFlight () { ApplicationContext applicationContext = новый AnnotationConfigApplicationContext(AppConfig.class); FlightServiceImpl FlightService = applicationContext.getBean(FlightServiceImpl.class); LocalDate date = LocalDate.now(); //не завершено } } Сервис
пакет com.org.Service; импортировать com.org.Domain.Flight; импортировать com.org.Repository.FlightRepository; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.stereotype.Service; @Услуга публичный класс FlightServiceImpl реализует FlightService{ @Autowired FlightRepositoryImpl FlightRepository; @Override public void addFlight(Рейс) { пытаться{ FlightRepository.addFlight(полет); }catch (Исключение e){ System.out.println("Вставка рейса не удалась, Невозможно подключиться к базе данных...."); } } } КЛАСС КОНФИГУРАЦИИ
пакет com.org.Config; импортировать org.springframework.context.annotation.ComponentScan; импортировать org.springframework.context.annotation.Configuration; @Конфигурация @ComponentScan("com.org") публичный класс AppConfig { //Бины автоматически генерируются } КЛАСС ДОМЕНА
пакет com.org.Domain; импортировать java.time.LocalDate; общественный класс Flight { частная строка идентификатор полета; частные струнные авиакомпании; частный источник строки; частная строка назначения; частный двойной тариф; частная LocalDate поездкаDate; частное целое число SeaCount; общественный рейс() { } публичная строка getFlightId() { вернуть идентификатор рейса; } общественный недействительный setFlightId (String FlightId) { this.flightId = идентификатор полета; } общественная строка getAirlines() { обратные авиакомпании; } public void setAirlines(String Airlines) { this.airlines = авиакомпании; } публичная строка getSource() { источник возврата; } public void setSource (источник строки) { this.source = источник; } общественная строка getDestination() { обратный пункт назначения; } public void setDestination (назначение строки) { this.destination = пункт назначения; } общественный двойной getFare() { обратный тариф; } public void setFare(двойной тариф) { this.fare = тариф; } общественная LocalDate getJourneyDate() { Дата обратного пути; } public void setJourneyDate (LocalDate travelDate) { this.journeyDate = поездкаDate; } публичное целое число getSeatCount() { вернуть количество мест; } public void setSeatCount(Integer SeatCount) { this.seatCount = SeatCount; } @Override публичная строка toString() { вернуть "Полет {" + "flightId='" + FlightId + '\'' + ", авиакомпании='" + авиакомпании + '\'' + ", source="" + источник + '\'' + ", Пункт назначения='" + пункт назначения + '\'' + ", тариф=" + тариф + ", датапутешествия=" + датапутешествия + ", SeatCount=" + SeatCount + '}'; } } РЕПОЗИТАРИЕ
пакет com.org.Repository; импортировать com.org.Domain.Flight; импортировать org.springframework.stereotype.Repository; импортировать java.util.HashMap; импортировать java.util.Map; @Репозиторий публичный класс FlightRepositoryImpl реализует FlightRepository{ частный статический Integer FlightId = 1000; @Override public void addFlight(Рейс) { База данных Map = new HashMap(); идентификатор полета+=1; база данных.put(flightId,flight); System.out.println("Добавлены сведения о рейсе: "+ Flight.toString()); } }
Я столкнулся с исключением нулевого указателя. Можете ли вы помочь мне объяснить, в чем проблема и что я делаю неправильно. Простите за грубое кодирование, я новичок.
Это ошибка:
Исключение в потоке «main» java.lang.NullPointerException: невозможно вызвать «com.org.Controller.Controller.addFlight()», потому что «com.org.App.controller» нулевой на com.org.App.main(App.java:22)
Это классы:
Приложение
пакет com.org; импортировать com.org.Config.AppConfig; импортировать com.org.Controller.Controller; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.context.ApplicationContext; импортировать org.springframework.context.annotation.AnnotationConfigApplicationContext; импортировать java.util.Scanner; приложение общедоступного класса { @Autowired общедоступный статический контроллер контроллера; public static void main(String[] args) { System.out.println("Здравствуйте, добро пожаловать в авиакомпанию AirGO"); System.out.println("Пожалуйста, выберите, что вы хотите сделать"); System.out.println("1.Добавить рейс:"); System.out.println("2.Поиск рейса"); Сканер-сканер = новый сканер(System.in); Целочисленный userChoice= Scanner.nextInt(); если (1==Выбор пользователя){ контроллер.addFlight(); } else if (2==userChoice) { контроллер.showFlight(); } еще System.out.println("Пожалуйста, введите действительные данные"); } } Контроллер //Фальшивый класс контроллера
пакет com.org.Controller; импортировать com.org.Config.AppConfig; импортировать com.org.Domain.Flight; импортировать com.org.Service.FlightServiceImpl; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.context.ApplicationContext; импортировать org.springframework.context.annotation.AnnotationConfigApplicationContext; импортировать org.springframework.stereotype.Component; импортировать java.time.LocalDate; @Компонент Контроллер публичного класса { @Autowired FlightServiceImpl FlightService = новый FlightServiceImpl (); общественная недействительность addFlight () { новый AnnotationConfigApplicationContext(AppConfig.class); Полет полет = новый полет (); Flight.setAirlines("Индиго"); Flight.setSource("Индия"); Flight.setDestination("Япония"); Flight.setFare(50456.54); LocalDate date = LocalDate.now(); Flight.setJourneyDate(дата); рейс.setSeatCount(2); FlightService.addFlight(полет); } общественная недействительность showFlight () { ApplicationContext applicationContext = новый AnnotationConfigApplicationContext(AppConfig.class); FlightServiceImpl FlightService = applicationContext.getBean(FlightServiceImpl.class); LocalDate date = LocalDate.now(); //не завершено } } Сервис
пакет com.org.Service; импортировать com.org.Domain.Flight; импортировать com.org.Repository.FlightRepository; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.stereotype.Service; @Услуга публичный класс FlightServiceImpl реализует FlightService{ @Autowired FlightRepositoryImpl FlightRepository; @Override public void addFlight(Рейс) { пытаться{ FlightRepository.addFlight(полет); }catch (Исключение e){ System.out.println("Вставка рейса не удалась, Невозможно подключиться к базе данных...."); } } } КЛАСС КОНФИГУРАЦИИ
пакет com.org.Config; импортировать org.springframework.context.annotation.ComponentScan; импортировать org.springframework.context.annotation.Configuration; @Конфигурация @ComponentScan("com.org") публичный класс AppConfig { //Бины автоматически генерируются } КЛАСС ДОМЕНА
пакет com.org.Domain; импортировать java.time.LocalDate; общественный класс Flight { частная строка идентификатор полета; частные струнные авиакомпании; частный источник строки; частная строка назначения; частный двойной тариф; частная LocalDate поездкаDate; частное целое число SeaCount; общественный рейс() { } публичная строка getFlightId() { вернуть идентификатор рейса; } общественный недействительный setFlightId (String FlightId) { this.flightId = идентификатор полета; } общественная строка getAirlines() { обратные авиакомпании; } public void setAirlines(String Airlines) { this.airlines = авиакомпании; } публичная строка getSource() { источник возврата; } public void setSource (источник строки) { this.source = источник; } общественная строка getDestination() { обратный пункт назначения; } public void setDestination (назначение строки) { this.destination = пункт назначения; } общественный двойной getFare() { обратный тариф; } public void setFare(двойной тариф) { this.fare = тариф; } общественная LocalDate getJourneyDate() { Дата обратного пути; } public void setJourneyDate (LocalDate travelDate) { this.journeyDate = поездкаDate; } публичное целое число getSeatCount() { вернуть количество мест; } public void setSeatCount(Integer SeatCount) { this.seatCount = SeatCount; } @Override публичная строка toString() { вернуть "Полет {" + "flightId='" + FlightId + '\'' + ", авиакомпании='" + авиакомпании + '\'' + ", source="" + источник + '\'' + ", Пункт назначения='" + пункт назначения + '\'' + ", тариф=" + тариф + ", датапутешествия=" + датапутешествия + ", SeatCount=" + SeatCount + '}'; } } РЕПОЗИТАРИЕ
пакет com.org.Repository; импортировать com.org.Domain.Flight; импортировать org.springframework.stereotype.Repository; импортировать java.util.HashMap; импортировать java.util.Map; @Репозиторий публичный класс FlightRepositoryImpl реализует FlightRepository{ частный статический Integer FlightId = 1000; @Override public void addFlight(Рейс) { База данных Map = new HashMap(); идентификатор полета+=1; база данных.put(flightId,flight); System.out.println("Добавлены сведения о рейсе: "+ Flight.toString()); } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение