不做任何更改的热插拔警告(Spring工具套件3.9)

问题描述 投票:0回答:1

在调试模式下运行代码时,我不断收到2条错误消息:

Could not delete [path_to]\productiondb.log. May be locked by another process

我不知道是什么进程锁定了它。当我在Pivotal tc Server在调试模式下运行时对代码进行更改时,它来了,但这似乎带来了很多麻烦。但是有时我会收到此警告:

Hote Code Replace Failed

也是由于某些更改。我通常只是重新启动服务器并继续前进。这不是真正的问题,真正的问题是当我没有进行任何更改时我会收到这些消息。当我运行代码的证书部分时,它会累加某些东西,而其他时候,我在sts中打开证书代码时会发生,但是,它似乎并没有在同一位置停两次。

我怀疑这与git有关。我正在使用git在版本之间进行更改并进行测试。因此,我认为STS在使用git更改分支之前会在内存中保存一些代码,并且在使用该代码运行或打开文件之前不会对其进行更新。但是我对sts和git都比较陌生,不能肯定它会那样工作。如果是的话,有人在我更改分支后知道如何更新sts吗?如果不是,那么有人知道是什么原因吗?

spring-tool-suite
1个回答
0
投票

如果以调试模式运行应用程序,则Eclipse调试器会在代码更改时通知应用程序,并尝试使用调试API将新代码交换到正在运行的应用程序中。如果您调试代码,遇到断点,单步执行代码,解决问题,更改代码并按保存,则此功能特别有用。那时,Eclipse编译器将更新类文件,并告诉正在运行的JVM交换新代码。如果成功,调试器将跳回到最后一个堆栈帧,并且您的应用程序将以您输入的方法的开头继续执行。这使您可以直接继续调试并逐步执行更新的代码,而无需重新启动应用程序。

虽然这是JVM的一个强大功能,但是在进行此热交换时,JVM可以处理的类的更改范围非常有限。它通常仅限于方法实现。因此,不支持添加新方法,添加或删除类的成员等。结果,将出现以上屏幕截图。这意味着JVM无法热交换更改后的代码,并且将继续使用先前加载的代码而不是更改后的代码运行。

© www.soinside.com 2019 - 2024. All rights reserved.