我在IntelliJ IDEA社区版上调试Java spring-boot应用程序时遇到了困难。主要问题是IDE不会在断点上停止,即使程序肯定通过它执行。如何让IntelliJ IDEA在断点处停止?
作为附加信息,这是我的运行配置:
Maven配置,命令为:spring-boot:run。在发布之前,我构建了项目。
答案 0 :(得分:31)
对我来说,这些步骤有效:
答案 1 :(得分:26)
对我有用的唯一方法是直接从Intellij Idea运行或调试应用程序。只需打开包含
的类 public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
然后单击鼠标右键 - >调试我的应用程序
答案 2 :(得分:13)
答案 3 :(得分:9)
我发现在我的构建中包含Spring Dev Tools会导致IntelliJ调试中断(按照上面的描述)。如果您不使用此功能,则只需将其从构建中删除。
如果使用Maven,则应从pom.xml中删除以下行。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
答案 4 :(得分:4)
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
</jvmArguments>
</configuration>
</plugin>
有关弹簧启动项目的远程debuge的更多信息,请阅读this
答案 5 :(得分:2)
我实现它的唯一方法是创建一个单独的远程调试配置。
所以去编辑配置 - &gt;远程 - &gt; +。然后通过intelliJ正常启动您的应用程序。然后切换到新创建的远程配置。不要运行它,请按debug。现在调试器已准备就绪,您可以设置断点,调试器将停止运行。
答案 6 :(得分:2)
不幸的是,所有prevoius答案都不完整。我花了很多时间在IntelliJ中找到正确的远程调试方法,这是完整的解释。
我们假定项目代码在本地计算机(Windows OS)中,并且您已在服务器(或VMWare工作站)的Ubuntu VM上部署了项目。并且这两台机器位于同一网络中(它们可以互相ping通)
首先,使用“运行”>“编辑配置”菜单添加新的“运行/调试”配置,然后单击左上角的+按钮,然后选择“远程”选项。保持配置参数不变,只为新配置定义一个名称。
其次,打开腻子并通过SSH连接到远程服务器。运行以下命令以在腻子终端中向您的项目添加远程调试功能:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
现在更改到远程服务器上项目的根目录(在同一腻子会话中),并使用您通常使用的命令来运行它(例如下面的示例):
mvn -U clean spring-boot:run
这里是每个人都忽略的最重要的部分:)
右键单击腻子会话窗口的顶部,然后选择“更改设置..”选项。转到左侧选项树中的路径“连接”>“ SSH”>“隧道”。现在添加两个端口转发记录,如下图所示(一个本地,它将本地主机5005端口转发到具有相同端口号的远程服务器IP,另一个远程将远程5005端口转发到本地计算机上的5005端口)< / p>
最后返回IntelliJ,并从运行菜单中选择您之前添加的配置,然后单击“调试”按钮。您的本地IntelliJ IDEA应该现在已连接到项目的远程部署,可以进行调试了!
答案 7 :(得分:1)
在inteliJ goto运行->编辑配置->在'+'上按->选择'应用程序'
填写字段:主类,工作目录,模块的类路径
答案 8 :(得分:0)
启用应用程序pom.XML上的调试端口 喜欢:
<plugin> <groupId>org.springframework.boot</groupId> <configuration> <jvmArguments> -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 </jvmArguments> </configuration> </plugin>
所以去编辑配置->远程-> +。然后开始 通常通过智能应用程序。然后切换到新 创建的远程配置。而不是运行它,请按调试。现在 调试器应已准备就绪,您可以设置断点和调试器 会停在他们身上。
答案 9 :(得分:0)
Spring boot maven plugin (> 2.2.0) forks 应用流程。因此,在调试模式下启动的老式“spring-boot:run”不会在断点处停止。
您有两个选择:
1.直接运行主类 See application configuration
2.远程调试
2.1.将 spring-boot-maven-plugin 配置为 enable remote debug
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=**n**,address=5005
</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>
2.2.运行服务器 See maven configuration
2.3.运行调试服务器 See remote JVM debug configuration