问题标签 [hotswapagent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 资源文件未重新加载
我的目标是用 DCEVM/Hotswap 代替 JRebel 来代替使用 Maven 构建的 Tomcat 项目。我相信它正在检测我的类文件更改并适当地处理它们。但是,它没有检测资源更改。
我开始假设它会加载 JVM 通常会加载的所有内容。接下来,我添加了一个 hotswap-agent.properties 文件,但也没有让它工作。
热插拔-agent.properties
我也试过 watchResources= 和 watchResources=true
我不清楚“watchResources”的格式应该是什么。
由于 IP 原因,我无法将完整的日志文件粘贴到公共论坛中,但确实看到了:
有趣的是,我的文件不在 C:\Software\src\main\resources 下,而是在 C:\Repos\myproject\src\main\java 和 c:\Repos\myproject\src\main\resources 下。
如果重要的话,资源是一个 MyBatis 映射器 XML 文件。
我想要一些消息,说明它检测到资源的变化和适当的消息。
java - 如何使用 DCEVM/Hotswap 代理进行 jar 文件更新?
我正在使用 DCEVM 热插拔代理将 java spring boot 应用程序作为 jar 文件运行。当我更改 jar 文件中的一些类文件时,应用程序不会重新加载这些更改。但是如果我提取我的 jar 文件并将我的应用程序作为一个简单的 java 类文件运行,将所有依赖项添加到类路径(就像 IntelliJ Idea 所做的那样),然后替换它成功重新加载的任何类文件。
运行提取的 jar 文件:
运行上述命令后,如果我进行任何更改并重新编译然后替换更新的类文件,则检测到更改并且我的应用程序反映了更改。
我得到上面的日志,它告诉我该类已重新加载。一切正常。
运行jar文件:
运行后如果我使用以下命令更新 jar 文件:
jar 文件得到更新,但没有反映更改,也没有生成日志。
java - 如何在没有 IDE 的情况下重新加载更改/HotSwap 重新加载类
目前我的设置包括 vim 和一个运行 Gradle 任务的单独终端窗口。
我想知道是否有可能触发 Gradle 守护程序的重新加载/重新编译更改类操作,以便 DCEVM 可以检测到它们并重新加载它们。
java - java热交换一个库
我正在使用 maven 开发一个 java 项目,该项目使用我自己的一些库作为依赖项,这些库正在“并行发展”。
我在调试时使用 HotswapAgent 进行热更改,但是,我不知道是否可以从我自己的库中进行热交换,因为有时我需要对我自己的任何库进行热更改。
我知道我可以将库代码添加到项目中,但这将是最后的手段,因为该代码由其他项目共享,我希望将它们作为依赖项保留
我已配置 hotswap-agent.properties 文件以添加外部库 extraClasspath=target/classes;/my-lib-project/classes;
HotswapAgent 在主项目中工作正常,但它不适用于我自己作为依赖项添加到 maven 的库。
我不知道这是否可能或者我做错了什么
java - 将 HotswapAgent/DCEVM 与 Clojure REPL 一起使用时出现 LinkageError
我正在尝试在混合 Clojure/Java Leiningen 项目中使用HotswapAgent/DCEVM,以避免在重新编译 Java 源代码后必须重新启动 REPL(我已经知道其他方法,例如 JRebel 和 Virgil)。
简而言之,问题是我LinkageError
在重新加载我重新编译的 Java 类后得到了一个,并且似乎该类没有被重新加载。
为了提供更多详细信息,我~/.lein/profiles.clj
在配置文件中进行了设置,以便我们使用此处:repl
找到的当前版本的 DCEVM JVM来运行 REPL。这是的相关部分:profiles.clj
为了重现该问题,我使用以下代码设置了一个最小的 Leiningen Clojure 和 Java 混合项目,其中包含一个小型 Java 类AD
:
以及一小段导入此类的 Clojure 代码:
然后我在 Emacs/CIDER 中启动 Clojure REPL,加载dcevm-complex-demo.ad
命名空间并评估(raise-to-power (variable 3.0))
产生结果的表达式AD(value=81.0, deriv=108.0)
。然后我修改Java源代码,例如,我将行更改public static int EXPONENT = 4;
为并在终端中public static int EXPONENT = 3;
重新编译使用。lein javac
REPL 中的一条消息告诉我该类AD
已重新加载。但是当我重新评估表达式时,(raise-to-power (variable 3.0))
我会期望得到结果AD(value=27.0, deriv=27.0)
,但我得到了这个错误:
dcevm-complex-demo.ad/raise-to-power (ad.clj:10) 处的执行错误 (LinkageError)。加载器约束违规:解析方法“AD AD.raiseToPower()”时,当前类 dcevm_complex_demo/ad$raise_to_power 的类加载器 clojure.lang.DynamicClassLoader @7c53a0c2 和方法定义类 AD 的类加载器“app” , 对于签名中使用的 AD 类型具有不同的 Class 对象(dcevm_complex_demo.ad$raise_to_power 在加载器 clojure.lang.DynamicClassLoader @7c53a0c2 的未命名模块中,父加载器 clojure.lang.DynamicClassLoader @1217a2dd;AD 在加载器的未命名模块中'应用程序')
这是完整的 REPL 交互的样子:
我怎样才能使类的重新加载AD
工作?我怀疑我可能必须更改函数clojure.lang.RT.baseLoader()
(clojure/lang/RT.java),但我不太确定如何去做。
java-7 - DCEVM+HotSwap Agent with JBoss EAP 6 & JDK 7
I am trying toconfigure DCEVM + HotSwapAgent for my eclipse project which uses JDK 7 & JBoss EAP 6.0.
After Replacing DCEVM & adding following VM arguments - I am getting "NoClassDefFoundError: org/jboss/modules/LocalModuleLoader
" during JBoss startup.
I tried following steps & encountered different error
DCEVM 7u79 installer.jar with latest version of Hotswap agent (1.4.2 jar) and setting VM argument as
-XXaltjvm=dcevm -javaagent:<FULL\\WINDOWS\\PATH>hotswap-agent-1.4.2-SNAPSHOT.jar=autoHotswap=true
--> I am getting "org/hotswap/agent/HotswapAgent : Unsupported major.minor version 52.0
"DCEVM 7u79 installer.jar with Hotswap agent (1.3.0 jar) and setting VM argument as
-XXaltjvm=dcevm -javaagent:<FULL\\WINDOWS\\PATH>hotswap-agent-1.4.2-SNAPSHOT.jar=autoHotswap=true
--> I was getting "java.lang.ClassNotFoundException: HotswapperPlugin
"DCEVM 7u79 installer.jar without Hotswap agent and setting VM argument as
-XXaltjvm=dcevm
--> I was getting "NoClassDefFoundError: org/jboss/modules/LocalModuleLoader
"Uninstalling DCEVM from JDK7 & no VM argument --> starts JBoss without any problem.
Please help me to resolve this error.
grails - 有没有人使用 Grails 4 / Java 11 并在开发过程中使用 DCEVM 进行热交换取得成功?
我们升级到 Grails 4 / Java 11 并在开发过程中失去了热插拔功能。我尝试了 DCEVM,但应用程序无法启动(第一次 withNewSession 调用时出错)。
有没有人成功让 Grails 和 DCEVM 一起工作?
java - HotswapAgent 不工作并抛出“无效,删除路径 =”
我正面临一个问题,我可以使用一些帮助,请。我的环境:
Dcevm-11.0.9+1 (2020-11-24) Intellij 202.6397.94 Centos7 Spring-Boot 2.1.6.RELEASE
我遵循了这些指南: https ://github.com/HotswapProjects/HotswapAgent & https://github.com/TravaOpenJDK/trava-jdk-11-dcevm
重新编译我的课程后得到的结果是:
HOTSWAP 代理:19:49:11.740 警告(org.hotswap.agent.watch.nio.WatcherNIO2)- <PATH_TO_MY_CHANGED_CLASS> 上的观察者无效,删除路径 =
而且我的服务没有更新。另外,如果有帮助,我附上了启动时应用程序日志的一部分。
java - TravaOpenJDK 新的 JVM 选项 -XX:HotswapAgent,fatjar 和 core 模式的区别?
TravaOpenJDK在 11.0.9 版本中引入了一个新的 JVM 选项 -XX:HotswapAgent。
有三种模式可以启用 HotswapAgent fatjar
、core
和external
。
fatjar
和 和有什么不一样core
?