Перезапуск Spring Boot Dev Tools не работает

Я пытаюсь перезапустить работу с Spring Boot DevTools. Я следовал приведенным здесь инструкциям: https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html

Я использую gradle и включил это в свой файл build.gradle:

bootJar {
    excludeDevtools = false
}

Я создаю файл jar и запускаю файл jar:

java -jar app.jar

Я могу подключиться к работающему приложению через Intellij. Когда я вношу изменения, я вижу в консоли Intellij, что обновленные классы загружаются в запущенный процесс. А в логах запущенного процесса вижу попытки перезапуска процесса. Однако процесс завершается и выдает этот журнал:

org.springframework.beans.factory.BeanDefinitionStoreException: не удалось проанализировать класс конфигурации [com.example.BootApplication]; вложенным исключением является java.io.FileNotFoundException: ресурс пути к классу [com/example/ExampleService.class] не может быть открыт, поскольку он не существует.

ExampleService — это класс, который я модифицировал.

Я попытался погуглить, черт возьми, но ничего не нашел. Я просмотрел множество руководств в Интернете, но ничего не нашел.

Кто-нибудь сталкивался с этим или что-то, что я могу попробовать, был бы очень признателен.

Почти наверняка вы должны использовать плагин Gradle для работы конкретных функций загрузки: gradle bootRun

Randy Casburn 01.02.2019 22:28

@RandyCasburn спасибо! Я только что попробовал это с gradle bootRun, и он отлично работает, как вы предлагаете. Но из приведенной выше документации кажется довольно очевидным, что он должен работать с исполняемым файлом jar, включая фрагмент, который я предоставил выше.

yspotts 03.02.2019 03:10

Я не смотрел на документы раньше, но только что сделал. Вы должны снова посмотреть на первую «листовую» ноту. В нем очень четко указано, что вы запускаете свое приложение как упакованное приложение с java -jar, поэтому инструменты отключены.

Randy Casburn 03.02.2019 03:13
1
3
2 422
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема основана на том, как работает компиляция файла. Когда вы компилируете файл, он сначала удаляет уже скомпилированный файл, а затем добавляет новый. Во время этого процесса наблюдатель за файловой системой рассматривает его как два разных обновления (удаление файла и добавление нового файла), если время опроса слишком мало. И удаление файла вызывает удаление файла из удаленного приложения и пытается перезапустить приложение без файла, который вы изменили, и поэтому вы получаете эту ошибку.

Я столкнулся с аналогичной проблемой, но решил ее, добавив следующее в application.properties

spring.devtools.restart.pollInterval=10s

Вы можете изменить pollInterval, который вам подходит

Это сделало трюк! Я принял этот ответ, поскольку он решил мою проблему.

yspotts 13.05.2019 18:12

Другие вопросы по теме