【问题标题】:IntelliJ IDEA 2017.1 does not stop on breakpointsIntelliJ IDEA 2017.1 不会在断点处停止
【发布时间】:2017-09-04 18:21:24
【问题描述】:

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

代码在本地运行(没有任何选项的 gradle 运行/调试配置),bootRun 作为 gradle 任务。

我尝试了无效缓存/重新启动,但没有成功。我也尝试过在 IDEA 中重新导入项目。

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

【问题讨论】:

  • 您是否尝试过与此问题不同的解决方案:stackoverflow.com/questions/11591662/…
  • 是的,没有成功。当我开始项目时,我得到了预期的22:21:01: Executing external task 'bootRun'... :compileJava UP-TO-DATE :bootRun Listening for transport dt_socket at address: 5005
  • 我在使用 maven 故障保护时遇到了这个问题。不知道是不是因为故障保护。我得调查一下。通常我使用surefire,没有这样的问题。
  • 不知道这些,但看看你的应用程序/调试器正在处理的端口。这让我了解了问题的根源

标签: java debugging intellij-idea gradle breakpoints


【解决方案1】:

嗯...由于某种原因,当应用程序在 8080 上运行时,创建 Gradle 运行/调试配置会使其连接到错误的端口(超过 50000 的随机端口)。

无论如何,长话短说,创建应用程序运行/调试配置解决了问题,现在一切正常。

【讨论】:

  • 我希望在我浪费大量时间尝试 maven 和 spring 配置文件之前找到这个
【解决方案2】:

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

【讨论】:

  • 有同样的问题。你能扩展一下吗?切换到应用程序配置是什么意思?谢谢
  • 运行->编辑配置-加号->应用程序->然后指向main方法
  • 在挠头 2 小时后救了我
  • 我的朋友,谢谢分享,但是如果你不分享步骤,你希望别人如何充分利用你的答案,或者更多澄清:我究竟如何切换到应用程序模式?!
  • 嗨,我也面临同样的问题。但就我而言,该项目是一个基于 Spring 的项目。那么如何配置Application config呢?
【解决方案3】:

如果您正在调用一个 rest api,请确保传入的参数与 param 变量具有相同的字段,如下所示 @PostMapping("/user") 公共 ResponseEntity> updateUserProfile(@RequestBody UserDTO userDto) {

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

【讨论】:

    【解决方案4】:

    我遇到过这个问题。

    1. 使缓存无效并重新启动
    2. 我在 intellij 中使用 Spring Boot rest api 项目,因此所有调试断点都被通过/忽略。但是当我使用邮递员点击 Api 时,程序开始调试过程

    【讨论】:

      【解决方案5】:

      这个问题的出现是由于不同的原因,你可以在Intellij Community pages找到一些答案。

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

      【讨论】:

        【解决方案6】:

        虽然 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 参数替换为提供的参数,包括 IntelliJ 传递以打开调试器端口的参数。修复只是一个字符...使用+= 而不是= 像这样:

          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',
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-11
          • 2015-07-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-29
          • 2013-07-20
          相关资源
          最近更新 更多