Привет всем!Для контекста я работаю над простым весенним проектом в intelliJ, чтобы настроить его на HotswapAgent с использованием DCEVM [ 8u181 build 2 ] вместе с совместимым JDK [ 8u181 ] на сервере приложений Payara 5.0.
Пожалуйста, не забывайте меня в следующих нескольких фрагментах кода и моем правдоподобном объяснении того, что происходит, и это не вопрос синтаксиса Spring MVCили это работает.
Это пример кода, который я тестирую на Hotswapping [Не встроенный в JVM, но с использованием DCEVM] и HotswapAgent [ 1.3.0 ]
HelloWorldController.java
@Controller
public class HelloWorldController {
@Autowired HelloService helloService;
@RequestMapping("/hello")
public String hello(
@RequestParam(value = "name", required = false, defaultValue = "World") String name,
Model model) {
model.addAttribute("name", name);
System.out.println( helloService.sayHello() );
return "helloworld";
}
Я не хочу включать код для helloService, так как это может привести к переполнению этого поста.
HelloService.sayHello () просто генерирует наиболее существенный Hello World в консоли
Как вы можете видеть выше, автоматическое подключение включено и выполняет правильную функцию (сказано выше).
После этогоЯ закомментирую аннотацию Autowired и вызов функции, и это дает мне сообщение об ошибке:
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.annotation.AnnotationFormatError: java.lang.IllegalArgumentException: Wrong type at constant pool index
Фокус на:
java.lang.IllegalArgumentException: Wrong type at constant pool index
Я отладилприложение и обнаружил, что IllegalArgumentException возникла, когда AnnotationParser анализировал аннотации класса Spring Controller из константного пула и членов (одной из аннотации, которая является 'типом' аннотации) не былоисправить, когда оно было взято из константного пула класса.
Так что, насколько мне известно, горячее развертывание выполняется неправильно (хотя HotswapAgent говорит, что оно перезагрузило класс на сервере Payara) или что-то не так с коммуникацией JVM или JDK, и я говорю это потому, чтокогда я делаю обратное, это комментирование, автоматическое подключение, затем горячее развертывание и запуск, поэтому я получаю исключение нулевого указателя.
Примечание: только для дополнительной информации
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException
Если кому-то понадобится дополнительная информация, код или информация об этом, я буду более чем рад уточнить.Всем спасибо за уделенное время.