首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jar文件更新中使用DCEVM/Hotswap代理?

如何在jar文件更新中使用DCEVM/Hotswap代理?
EN

Stack Overflow用户
提问于 2019-09-22 10:21:45
回答 1查看 1.4K关注 0票数 1

我正在使用DCEVM热交换代理作为jar文件运行一个java spring引导应用程序。当我更改jar文件中的某些类文件时,应用程序不会重新加载这些更改。但是,如果我提取我的jar文件并作为一个简单的java类文件运行我的应用程序,将所有依赖项添加到类路径(就像IntelliJ的想法一样),那么替换它成功地重新加载的任何类文件。

运行解压缩jar文件的

代码语言:javascript
复制
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

在运行上述命令之后,如果我正在做任何更改,然后重新编译,然后替换更新的类文件,则会检测到这些更改,并且我的应用程序会反映这些更改。

代码语言:javascript
复制
HOTSWAP AGENT: 15:35:55.349 RELOAD (org.hotswap.agent.config.PluginManager) - Reloading classes [com.company.controller.HealthController] (autoHotswap)

我得到上面的日志,它告诉我这个类是重新加载的。一切都很好。

运行jar文件:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
jar uf app.jar path/HealthController.class

jar文件被更新,但是更改没有反映,也没有生成日志。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-06 14:08:51

HotswapAgent不检测jar文件中的类修改。您可以使用extraClasspath配置参数来代替它。看看http://hotswapagent.org/mydoc_configuration.html如何设置它。

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

https://stackoverflow.com/questions/58048227

复制
相关文章

相似问题

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