问题标签 [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.

0 投票
0 回答
523 浏览

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 文件。

我想要一些消息,说明它检测到资源的变化和适当的消息。

0 投票
1 回答
1062 浏览

java - 如何使用 DCEVM/Hotswap 代理进行 jar 文件更新?

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

运行提取的 jar 文件:

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

我得到上面的日志,它告诉我该类已重新加载。一切正常。

运行jar文件:

运行后如果我使用以下命令更新 jar 文件:

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

0 投票
1 回答
172 浏览

java - 如何在没有 IDE 的情况下重新加载更改/HotSwap 重新加载类

目前我的设置包括 vim 和一个运行 Gradle 任务的单独终端窗口。

我想知道是否有可能触发 Gradle 守护程序的重新加载/重新编译更改类操作,以便 DCEVM 可以检测到它们并重新加载它们。

0 投票
1 回答
98 浏览

java - java热交换一个库

我正在使用 maven 开发一个 java 项目,该项目使用我自己的一些库作为依赖项,这些库正在“并行发展”。

我在调试时使用 HotswapAgent 进行热更改,但是,我不知道是否可以从我自己的库中进行热交换,因为有时我需要对我自己的任何库进行热更改。

我知道我可以将库代码添加到项目中,但这将是最后的手段,因为该代码由其他项目共享,我希望将它们作为依赖项保留

我已配置 hotswap-agent.properties 文件以添加外部库 extraClasspath=target/classes;/my-lib-project/classes;

HotswapAgent 在主项目中工作正常,但它不适用于我自己作为依赖项添加到 maven 的库。

我不知道这是否可能或者我做错了什么

0 投票
1 回答
103 浏览

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 javacREPL 中的一条消息告诉我该类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 交互的样子:

REPL 交互

我怎样才能使类的重新加载AD工作?我怀疑我可能必须更改函数clojure.lang.RT.baseLoader()clojure/lang/RT.java),但我不太确定如何去做。

0 投票
0 回答
90 浏览

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.

0 投票
2 回答
192 浏览

grails - 有没有人使用 Grails 4 / Java 11 并在开发过程中使用 DCEVM 进行热交换取得成功?

我们升级到 Grails 4 / Java 11 并在开发过程中失去了热插拔功能。我尝试了 DCEVM,但应用程序无法启动(第一次 withNewSession 调用时出错)。

有没有人成功让 Grails 和 DCEVM 一起工作?

0 投票
0 回答
109 浏览

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> 上的观察者无效,删除路径 =

而且我的服务没有更新。另外,如果有帮助,我附上了启动时应用程序日志的一部分。

0 投票
0 回答
253 浏览

java - Java DCEVM - 为 Java 1.8.0.202 版本获取“无法获得 D:\Java8 的 dceverion”

Java版本:1.8.0_202 JDKDCEVM jar[DCEVM-8u181-installer.jar][1]

执行上述 jar 并单击按钮Replace by DCEVMInstall DCEVM as altjvm在 UI 弹出窗口中。

我收到消息Could not get dceversion of D:\Java8并且 DCEVM,HotSwap 无法正常工作。

有没有办法解决这个问题或任何替代兼容的 dcevm jar/解决方案/解决方法来支持Java 1.8.0.202更高版本

还为任何其他替代开源库开放,以实现 java 8 中的热交换。

提前致谢。

无法获得 dceversion

0 投票
1 回答
532 浏览

java - TravaOpenJDK 新的 JVM 选项 -XX:HotswapAgent,fatjar 和 core 模式的区别?

TravaOpenJDK在 11.0.9 版本中引入了一个新的 JVM 选项 -XX:HotswapAgent

有三种模式可以启用 HotswapAgent fatjarcoreexternal

fatjar和 和有什么不一样core