У меня возникла проблема с Spring Boot. Недавно я обновил зависимость Spring Boot до версии 3.2.4.
Когда я пытаюсь вызвать следующую конечную точку:
@PutMapping("/{uid}/test/{state}")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void update(
Context context,
@PathVariable String uid,
@PathVariable String state
) throws RuntimeFunctionalException {
this.service.updateState(uid, state, context);
}
Выход:
Имя аргумента типа [java.lang.String] не указано, а информация об имени параметра недоступна через отражение. Убедитесь, что компилятор использует флаг «-parameters».
Кто-нибудь еще сталкивается с той же проблемой?
Пожалуйста, включите эту конфигурацию в свой POM-файл.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<parameters>true</parameters>
</configuration>
</plugin>
эта конфигурация важна <parameters>true</parameters>Подробности по ссылке
Чтобы устранить проблему, добавьте имя для аннотаций @RequestParam и @PathVariable.
Итак, вместо этого:
public ResponseEntity<CommandResponse> update(
@PathVariable long param1,
@RequestParam String param2) {
// ...
}
используйте это >>>
public ResponseEntity<CommandResponse> update(
@PathVariable("param1") long param1,
@RequestParam("param2") String param2) {
// ...
}
У меня та же ошибка, что и у вас. Я обнаружил, что вам действительно нужно добавить опцию «-parameters» в компилятор Java. В зависимости от вашего инструмента сборки вам следует предпринять правильные действия. Как и в моем случае, я использую Gradle, вот как это выглядит:
tasks.withType(JavaCompile) {
options.compilerArgs = ['-parameters']
doFirst {
println "Compiler args: ${options.compilerArgs}"
}}
Кроме того, я использую VS Code, и когда я запускаю файл приложения с помощью команды «Выполнить Java» (при щелчке правой кнопкой мыши), он не работает. Использование ./gradlew bootRun работает так, как и ожидалось!
И еще: если вы используете явную PathVariable, она должна работать.