gpt4 book ai didi

java - 如何通过 jar 文件更新使用 DCEVM/Hotswap Agent?

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:18 27 4
gpt4 key购买 nike

我正在使用 DCEVM 热插拔代理将 java spring boot 应用程序作为 jar 文件运行。当我更改 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

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

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 文件已更新,但更改未反射(reflect),并且没有生成日志。

最佳答案

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

关于java - 如何通过 jar 文件更新使用 DCEVM/Hotswap Agent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58048227/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com