Install
- Download latest release of Jetbrains Runtime 17, unpack it and set JAVA_HOME to it’s location (or add it as JDK to your IDE).
- Download latest release of Hotswap agent jar,
unpack
hotswap-agent.jar
and copy it to<JBR-install-directory>/lib/hotswap
folder. When using the agent, it’s important to note that the file name inlib/hotswap
folder should not contain the version name, and should instead use the plainhotswap-agent.jar
filename.
Configure
- Run your application with JBR using additional options:
-XX:+AllowEnhancedClassRedefinition -XX:HotswapAgent=fatjar
- (optional) create a file named “hotswap-agent.properties” inside your resources directory, see available properties and default values: https://github.com/HotswapProjects/HotswapAgent/blob/master/hotswap-agent-core/src/main/resources/hotswap-agent.properties
- (optional) in case you are not using
autoHotswap=true
and therefore not using the hotswapping mechanism provided by HotswapAgent, you may want to add-Xlog:redefine+class*=info
as an additional JVM argument in order to get feedback about reloaded classes.
Run
-
start the application in debug mode, check that the agent and plugins are initialized correctly:
HOTSWAP AGENT: 9:49:29.548 INFO (org.hotswap.agent.HotswapAgent) - Loading Hotswap agent - unlimited runtime class redefinition. HOTSWAP AGENT: 9:49:29.725 INFO (org.hotswap.agent.config.PluginRegistry) - Discovered plugins: [org.hotswap.agent.plugin.hotswapper.HotswapperPlugin, org.hotswap.agent.plugin.jvm.AnonymousClassPatchPlugin, org.hotswap.agent.plugin.hibernate.HibernatePlugin, org.hotswap.agent.plugin.spring.SpringPlugin, org.hotswap.agent.plugin.jetty.JettyPlugin, org.hotswap.agent.plugin.tomcat.TomcatPlugin, org.hotswap.agent.plugin.zk.ZkPlugin, org.hotswap.agent.plugin.logback.LogbackPlugin] ... HOTSWAP AGENT: 9:49:38.700 INFO (org.hotswap.agent.plugin.spring.SpringPlugin) - Spring plugin initialized - Spring core version '3.2.3.RELEASE'
-
save a changed resource and/or use the HotSwap feature of your IDE to reload changes