我正在使用 DCEVM 熱插拔代理將 java spring boot 應(yīng)用程序作為 jar 文件運(yùn)行。當(dāng)我更改 jar 文件中的某些類文件時(shí),應(yīng)用程序不會(huì)重新加載這些更改。但是,如果我提取 jar 文件并將應(yīng)用程序作為簡(jiǎn)單的 java 類文件運(yùn)行,將所有依賴項(xiàng)添加到類路徑(就像 IntelliJ Idea 所做的那樣),然后替換它成功重新加載的任何類文件。運(yùn)行提取的 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運(yùn)行上述命令后,如果我進(jìn)行任何更改并重新編譯,然后替換更新的類文件,則會(huì)檢測(cè)到更改,并且我的應(yīng)用程序會(huì)反映這些更改。HOTSWAP AGENT: 15:35:55.349 RELOAD (org.hotswap.agent.config.PluginManager) - Reloading classes [com.company.controller.HealthController] (autoHotswap)我得到上面的日志,它告訴我該類已重新加載。一切正常。運(yùn)行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運(yùn)行后如果我使用以下命令更新 jar 文件:jar uf app.jar path/HealthController.classjar 文件已更新,但更改未反映,并且沒有生成日志。
1 回答

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
HotswapAgent 不檢測(cè) jar 文件內(nèi)的類修改。您可以使用 extraClasspath 配置參數(shù)代替它。
添加回答
舉報(bào)
0/150
提交
取消