如何使用Eclipse调试Spring Boot应用程序?

时间:2014-06-09 05:02:25

标签: java spring eclipse debugging spring-boot

我的Spring Boot webapp运行正常,我想通过Eclipse调试它。

因此,在启动我的远程Java应用程序调试器时,我应该听哪个端口?我的webapp上有一个设置我必须设置为启用调试吗?

13 个答案:

答案 0 :(得分:152)

为什么不直接点击main()方法并选择"Debug As... Java Application"

答案 1 :(得分:81)

section 19.2 in Spring Boot Reference告诉您在启用远程调试支持的情况下启动应用程序。

$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
   -jar target/myproject-0.0.1-SNAPSHOT.jar

启动应用程序后,只需在运行/调试配置中添加远程Java应用程序配置,选择启动应用程序时定义的端口/地址,然后就可以自由调试了。

答案 2 :(得分:18)

更简单的解决方案:

而不是键入mvn spring-boot:run, 只需输入mvnDebug spring-boot:run

即可

您仍然需要通过为远程Java应用程序"远程Java应用程序进行新的调试配置来在Eclipse中附加调试器。在相关港口。

答案 3 :(得分:16)

我没有设置远程调试以使其正常工作,我使用了Maven。

  1. 确保在Eclipse中安装了Maven插件。
  2. 点击运行>运行配置> Maven Build>新的启动配置
    • 基本目录:浏览到项目的根目录
    • 目标:spring-boot::run
  3. 点击应用,然后点击运行
  4. NB。如果您的IDE在执行逐行调试时发现项目的源代码时遇到问题,请查看this SO answer以了解如何手动将源代码附加到调试应用程序。

    希望这有助于某人!

答案 4 :(得分:16)

如何调试远程登台或生产Spring Boot应用程序

服务器侧

假设您已成功关注Spring Boot's guide on setting up your Spring Boot application as a service。 您的应用程序工件驻留在let manager = FileManager.default let documentURL = try! manager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) let url = documentURL.appendingPathComponent("SomeData.plist") let sampleDict = ["name" : "somebody", "age" : "30 ", "food" : "taco"] do { let data = try PropertyListSerialization.data(fromPropertyList: sampleDict, format: .xml, options: 0) try data.write(to: url) } catch let error as NSError { print(error) } 中,并附带配置文件/srv/my-app/my-app.war

/srv/my-app/my-app.conf

当您使用# This is file my-app.conf # What can you do in this .conf file? The my-app.war is prepended with a SysV init.d script # (yes, take a look into the war file with a text editor). As my-app.war is symlinked in the init.d directory, that init.d script # gets executed. One of its step is actually `source`ing this .conf file. Therefore we can do anything in this .conf file that # we can also do in a regular shell script. JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=localhost:8002,server=y,suspend=n" export SPRING_PROFILES_ACTIVE=staging 重新启动Spring Boot应用程序时,位于sudo service my-app restart的日志文件应该是一行/var/log/my-app.log

客户端(开发者机器)

打开到服务器的SSH端口转发隧道:Listening for transport dt_socket at address: 8002。保持此SSH会话正常运行。

在Eclipse中,从工具栏中选择运行 - > 调试配置 - >选择远程Java应用程序 - >点击按钮 - >选择连接类型标准(套接字连接),作为主机 localhost ,以及作为端口 8002 (或在之前的步骤中配置的任何内容) 。单击应用,然后单击调试

Eclipse调试器现在应该连接到远程服务器。切换到 Debug 透视图应显示已连接的JVM及其线程。断点应在远程触发后立即触发。

答案 5 :(得分:13)

在下面的命令中运行pom.xml

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

使用端口5005上的调试选项启动远程Java应用程序

答案 6 :(得分:7)

我认为最好的解决方案是在pom.xml中添加一个插件,你不需要一直做任何事情:

preferences.getString(key, "");

答案 7 :(得分:3)

  • 右键单击您的项目,然后选择“调试为=> Java应用程序 或Spring boot App” -capture1- enter image description here
  • 如果您希望您的应用程序停在应用程序中的某个位置,请双击左侧,您将获得此捕获2。 enter image description here
  • 然后,当您启动应用程序时,使用这些箭头进行下一步。(捕获3) enter image description here

答案 8 :(得分:2)

请参阅http://java.dzone.com/articles/how-debug-remote-java-applicat以启用远程调试。 如果您使用tomcat来运行应用程序,请使用远程调试参数启动tomcat 或者您可以使用以下命令启动带有JPDA支持的tomcat。

<tomcat bin dir>/startup.bat jpda

* nix中

<tomcat bin dir>/startup.sh jpda

这将启用端口8000上的远程调试

答案 9 :(得分:1)

使用eclipse或任何其他IDE,只需右键单击主弹簧启动应用程序,然后单击“debug as java application”

答案 10 :(得分:1)

这个问题已经回答了,但我也有同样的问题来调试Springboot + gradle + jHipster,

主要是Spring启动应用程序可以通过右键单击和调试进行调试, 但是当你使用gradle时,有一些额外的环境参数设置,那么就无法直接调试。

为了解决这个问题,Eclipse提供了一个额外的功能Remote Java Application

通过使用此功能,您可以调试应用程序。

按照以下步骤操作:

运行你的gradle应用程序 ./gradlew bootRun --debug-jvm命令

现在去eclipse - &gt;右键单击项目和调试配置 - &gt;远程Java应用程序。

将主机和端口添加为localhost,将端口添加为5005(默认为gradle debug,您可以更改它)

Refer了解更多细节和步骤。

答案 11 :(得分:1)

<?php $servername = "localhost"; $username = "myusername"; $password = "mypassword"; $dbname = "pi_test_data"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("connection failed: " . $conn->connect_error); } $sql = "INSERT INTO pi_test_data (status) VALUES ('$_GET[status]')"; if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . " <br>" . $conn->error; } $conn->close(); ?> 。放置一个调试器点,然后从邮递员之类的客户端调用应用程序

答案 12 :(得分:0)

右键单击 Spring Boot Applications主类文件->选择 Debug As 选项->选择 Java Application

enter image description here 现在,您可以使用断点来调试应用程序。