IntelliJ IDEA 2017.1 不会在断点处停止

IntelliJ IDEA 2017.1 does not stop on breakpoints

我最近使用新的 IDEA 2017 打开了一个旧的 Gradle 项目,我刚刚注意到它不会再在断点处停止(这些是活动的,但不是 "validated" - 上面没有复选标记。

代码是 运行 本地(gradle run/debug 配置,没有任何选项),bootRun 作为 gradle 任务。

我尝试了无效 Caches/Restart 但没有成功。我也试过在 IDEA 中重新导入项目。

不久前,我在升级到 Spring 1.4.5 后遇到了同样的问题(如果我没记错的话)。我不知道为什么,所以我降级回 1.4.2,一切正常。但是,这次我是 运行ning Spring 1.2.4,如果不更改一些代码我就无法升级到更新的版本(我现在还不想那样)

嗯...出于某种原因,创建 Gradle run/debug 配置会使它连接到错误的端口(随机超过 50000),而应用程序 运行 8080.

总之,长话短说,创建应用程序 run/debug 配置解决了问题,现在一切正常。

确认。问题是我尝试使用 maven 运行 配置进行调试。切换到应用程序配置类型会有所帮助。我花了半天时间 (

如果您正在调用 rest api 确保传入的参数与参数变量具有相同的字段,如此处所示 @PostMapping("/user") public ResponseEntity updateUserProfile(@RequestBody UserDTO userDto) {

UserDTO obj 的传入值应该在 json 传递中具有相同的实例变量列表....还应该检查来自 repos 的对象引用。

我遇到过这个问题。

  1. 使缓存无效并重新启动
  2. 我在 intellij 中使用 Spring Boot rest api 项目,所以所有调试断点都得到 passed/ignored。但是当我使用邮递员
  3. 点击Api时,程序开始了调试过程

出现此问题的原因多种多样,您可以在 Intellij Community pages 上找到一些答案。

也就是说,最常见的原因之一是构建插件。如果您真的不需要构建插件,您可以禁用它们并重试:

虽然 2017.1 已经过去很久了,但这是“intellij 调试器不会在断点处停止 java”的最佳答案,所以我将在此处添加另一种棘手的方法来解决这个问题和相关的解决方案。

导致这种情况的另一种方法是将您的 gradle 设置设置为 运行 测试 gradle,并且还为您的测试配置执行类似以下操作:

  doFirst {
    jvmArgs = [
        '--add-modules', 'ALL-MODULE-PATH',
        '--add-opens', 'java.base/java.lang.module=ALL-UNNAMED',
        '--add-opens', 'java.base/jdk.internal.loader=ALL-UNNAMED',

这里的错误是,这会将所有 jvm args 替换为提供的参数,包括 IntelliJ 传递以打开调试器端口的 args。修复只是一个字符......使用 += 而不是 = 像这样:

  doFirst {
    jvmArgs += [
        '--add-modules', 'ALL-MODULE-PATH',
        '--add-opens', 'java.base/java.lang.module=ALL-UNNAMED',
        '--add-opens', 'java.base/jdk.internal.loader=ALL-UNNAMED',

我的问题是我在 Intellij 的 Gradle 运行 配置中使用 bootrun 作为命令,而不是 bootRun。奇怪的是,应用程序确实从前者开始,但它不会在任何断点处停止。切换到 bootRun 后,断点立即开始工作。