HotswapAgent 使用教程
本教程将引导您了解如何安装和使用 HotswapAgent,这是一个用于Java应用的热替换工具,允许在运行时无限次地重新定义类。
1. 项目目录结构及介绍
HotswapAgent的目录结构大致如下:
.
├── bin # 包含启动脚本和其他可执行文件
├── docs # 文档相关资料
├── src # 源代码
│ ├── main # 主程序源代码
│ └── test # 测试代码
├── build.gradle # Gradle构建文件
├── gradlew # Gradle wrapper脚本
└── settings.gradle # Gradle设置文件
bin
: 包含启动或停止HotswapAgent的脚本。docs
: 提供项目文档和教程。src/main
: 存放主要的Java源代码。src/test
: 单元测试代码。build.gradle
: 定义构建任务和依赖项。gradlew
: 使用Gradle构建项目的便捷脚本。settings.gradle
: 项目范围的Gradle配置。
2. 项目的启动文件介绍
HotswapAgent的启动通常通过在JVM启动时添加特定的Java代理来完成。这可以通过在命令行中使用以下选项完成:
对于Java 17及以上版本:
java -XX:+AllowEnhancedClassRedefinition -XX:HotswapAgent=fatjar ...
对于Java 11:
java -XX:HotswapAgent=fatjar ...
对于Java 8:
java -XXaltjvm=dcevm -javaagent:hotswap-agent.jar ...
这里的...
代表你的主类及其应用参数。fatjar
选项是指向HotswapAgent的完整jar文件,而hotswap-agent.jar
则是HotswapAgent的基本jar。
此外,还可以使用不同的模式(如核心模式或外部模式),具体取决于你的需求和环境。
3. 项目的配置文件介绍
HotswapAgent不直接依赖于一个单一的配置文件,而是通过Java系统属性或者在启动时传递给-D
选项来配置。例如,可以设置特定插件的行为或调整代理的其他特性。下面是一些示例:
-
设置Spring插件的行为:
-Dhotswap.agent.plugins.spring.enabled=true
-
开启日志输出:
-Dhotswap.agent.logging.level=DEBUG
更多配置选项可在项目文档中找到,也可以查看源代码中的src/main/resources/hotswap-agent.properties
样例文件。
完成上述步骤后,您应该可以在运行时修改和热加载您的Java应用中的类,无需重启服务器。务必确保你的开发环境支持DCEVM(Dynamic Code Evolution Virtual Machine),这是HotswapAgent能够工作的重要前提。