在使用Intellij IDEA社区版的hotswap函数时,我遇到了麻烦。我的是14.1.4。
每次启动调试和更改java代码之后,我都已经单击“重新构建项目”,并在确认重新加载类时按“是”。将重新加载已更改的类的Intellij报告,但应用程序的结果与以前相同。我只是在尝试最简单的Java应用程序(例如,在Tomcat、applet等场景中),使用一些简单的东西,比如System.out.println、字符串连接等等。我在调试模式中更改的只是方法体代码,而不是方法签名/名称。我搞不懂。
在Eclipse中,我只需直接更改代码并按保存,然后它就能工作了。
哪里出了问题?
(备注:
实际上,我正在尝试使用DCEVM,它使结构更改成为可能(例如更改类名、方法名称、添加方法等),认为它可以解决Intellij中的hotswap问题。不用说,这不管用。
在eclipse中,我成功地使用了DCEVM,并且可以在调试期间更改方法名。
我进一步尝试了hotswap-agent,但它仍然没有工作;我遇到一篇文章说IDE必须通过JDPA-连接到JVM通过端口5000,但无论我如何尝试,Intellij控制台显示它仍然通过一个随机端口(下面51018)连接:
"C:\Program Files\Java\jdk1.8.0_60\bin\java" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:51018...."连接到目标VM,地址:“127.0.0.1:51018”,传输:“套接字”
有可能强迫它通过一个特定的端口连接吗?在Run/Debug中添加DEBUG_OPT环境变量不起作用)
发布于 2015-09-13 12:18:10
在找到Jetbrains到发出请求的一个反馈后,发现这是Intellij的设计行为

换句话说,问题与我如何测试热交换有关:
public class Main {
// /*
public static String getName() {
return "James"; // <=== (2)
}
//*/
public static void main(String[] args) {
System.out.println("Hello " + getName()); // <=== (1)
}
}DCEVM也非常有效,使用了相同的方法来测试热交换。
您还可以在堆栈跟踪窗口中使用"drop frame“使当前语句回滚到方法的开头(main()除外)--实际上它在Eclipse中的行为是相同的。
https://stackoverflow.com/questions/32507900
复制相似问题