Как использовать DCEVM / Hotswap Agent с обновлением файла JAR? - PullRequest
0 голосов
/ 22 сентября 2019

Я запускаю весеннее загрузочное приложение в виде jar-файла с агентом горячей замены DCEVM.Когда я изменяю некоторые файлы классов в моем jar-файле, приложение не перезагружает эти изменения.Но если я извлекаю свой jar-файл и запускаю свое приложение как простой файл класса java, добавляя все зависимости к пути к классу (как это делает IntelliJ Idea), то заменяю любой файл класса, который он успешно загружает.

Запуск извлеченного файла JAR:

java -XXaltjvm=dcevm -javaagent:path/hot-swap/hotswap-agent-1.3.1-SNAPSHOT.jar=autoHotswap=true -Dspring.profiles.active=local -Dserver.port=8082 -classpath path/jdk1.8.0_191.jdk/Contents/Home/jre/lib/charsets.jar:--jdk-lib-jars:./path/classes:..other-jar-file-path com.company.app.App

после выполнения вышеуказанной команды, если я делаю какие-либо изменения и перекомпилирую, а затем заменяю обновленный файл класса, тогда изменения обнаруживаются, и мое приложение отражаетизменения.

HOTSWAP AGENT: 15:35:55.349 RELOAD (org.hotswap.agent.config.PluginManager) - Reloading classes [com.company.controller.HealthController] (autoHotswap)

Я получаю журнал выше, который сообщает мне, что класс перезагружен.все работает нормально.

Запуск файла JAR:

java -XXaltjvm=dcevm -javaagent:path/hot-swap/hotswap-agent-1.3.1-SNAPSHOT.jar=autoHotswap=true -Dspring.profiles.active=local -Dserver.port=8081 -jar app.jar

После запуска Если я обновлю файл JAR с помощью следующей команды:

jar uf app.jar path/HealthController.class

jar-файл обновляется, но изменения не отражаются и журнал не создается.

...