我正试图在我的计算机上的Tomcat上设置java类的热交换,但在我的IDE (Eclipse)中没有进行配置。在所有示例中,我可以发现Tomcat服务器在Eclipse中运行。是否有可能在外部tomcat上与DCEVM+HotSwapAgent进行代码热交换?以下是我迄今所做的工作:
jdk1.8.0_112将DCEVM设置为DCEVM-light-8u112-installer.jar的altjvmset JAVA_OPTS=-XXaltjvm=dcevm -javaagent:<path-to>hotswap-agent-1.0.jar %JAVA_OPTS%war,它在WEB-INF/classes中包含了一个hotswap-agent.properties在我的hotswap-agent.properties文件中,我已经将extraClasspath属性设置为eclipse工作区中的项目的bin文件夹。我还设置了autoHotswap=true (无论调试器是否附加,我都希望有代码hotswap )。
使用此设置,我无法让Tomcat在eclipse中构建时对更改做出反应(它被设置为自动构建)。我是不是漏掉了什么东西才能让这件事起作用?
附带注意--我在JRebel上做了与上面完全相同的事情,所以我知道这至少是可能的。我只是想看看我是否能让它与所有的开源工具一起工作。提前感谢!
发布于 2018-05-16 18:55:36
这是可能的。请检查extraClasspath设置是否正确-编译一个文件(检查.class文件的新版本是否在extraClasspath上创建),并重新启动tomcat部署新的WAR。如果未应用更改,则extraClasspath设置不正确。
调试级别还应该提供更多有关路由源的详细信息--应该有一个类似于Registering resource listener on classpath URI {}的行。
请下载最新的HA版本。
发布于 2018-09-10 08:50:25
您可以在conf/Catalina/localhost下为上下文创建一个文件,并在使用Eclipse构建自动更改类时让Tomcat重新加载它们。
对于Tomcat8.5,your_project.xml文件将类似于Tomcat的其他版本,请查看文档,因为它可能略有不同。
<Context docBase="/eclipse-workspace/your_project/src/main/webapp">
<Resources>
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/eclipse-workspace/your_project/target/classes" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/eclipse-workspace/your_other_project/target/classes" internalPath="/" webAppMount="/WEB-INF/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
base="/eclipse-workspace/your_external_libs" internalPath="/" webAppMount="/WEB-INF/lib" />
</Resources>
</Context>https://stackoverflow.com/questions/44508672
复制相似问题