首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java检测到代码已被热插拔

Java检测到代码已被热插拔
EN

Stack Overflow用户
提问于 2018-01-10 08:23:23
回答 1查看 326关注 0票数 0

奇怪的问题--但我想知道我该如何写代码来简单地说:“自从我上次检查之后,intellij有没有热交换过的类?”

为什么?

出于邪恶的历史原因-- springcontext需要2-3分钟才能启动,这意味着如果你只想运行一个测试,那就需要2-3分钟的等待时间。如果你是一个TDD的人,想要写一点,运行,写一点,运行-这是行不通的。加快springcontext加载显然是理想的,但远远超出了我所拥有的时间,因为一切都是一团糟--我想的只是做一个junit测试,这是一个无限循环:

代码语言:javascript
运行
复制
while true
    try {run the actual test;show success} catch {show error}
    wait until code is hot swapped

因此,在很多情况下,某人只需编写一点代码,按下build键-它将立即再次运行,而无需重新加载上下文-将2-3分钟的延迟降低到不到1秒。

EN

回答 1

Stack Overflow用户

发布于 2018-05-17 02:36:35

看看HotswapAgent,Java无限运行时类和资源重新定义。

下载dcevm和最新的hotswap-agent-core.jar并使用java --javaagent:c:\java\hotswap-agent-core.jar YourApp运行您的应用程序。

添加HotswapAgent依赖项:

代码语言:javascript
运行
复制
    <dependency>
        <groupId>org.hotswapagent</groupId>
        <artifactId>hotswap-agent-core</artifactId>
        <version>1.3.0</version>
        <scope>provided</scope>
    </dependency>

你还需要热插拔代理插件来重新加载Spring和其他bean/缓存:

代码语言:javascript
运行
复制
        <dependency>
            <groupId>org.hotswapagent</groupId>
            <artifactId>hotswap-agent-plugins</artifactId>
            <version>1.3.0</version>
            <type>pom</type>
        </dependency>

编写你的插件类:

代码语言:javascript
运行
复制
    @Plugin(name = "TriggerHotswapPlugin")
    public class TriggerHotswapPlugin {

        @OnClassLoadEvent(classNameRegexp = ".*", events = LoadEvent.REDEFINE)
        public static void onAnyReload() {
            .. synchronization mechanism with your class .. ;
        }

        @OnResourceFileEvent(path = "/", filter = ".*.resource")
        public void onResourceChanged() {
            .. synchronization mechanism with your class .. ;
        }
    }

创建hotswap agent.properties

代码语言:javascript
运行
复制
    pluginPackages=your.plugin.package

作为另一种选择,你可以创建简单的javaagent来触发热交换,但是无论如何你都需要完整的热交换java类,为什么不编写自定义的热交换代理插件呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48178609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档