使用 Eclipse 或其他方式在 linux 目标上进行 Java 远程调试

标签 java linux eclipse debugging remote-debugging

谁能告诉我在 Linux 目标上远程调试 Java 的好方法?

我所追求的是一些构建我的 Java 项目、部署到目标然后在目标上调试的方法。 我知道 java 可以通过使用调试标志启动正在运行的 JAR 来在目标上进行调试 例如

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y suspend=y -jar stockTradingGUI.jar

但我不知道如何通过 Eclipse 触发将构建的 JAR 部署到目标并以 Debug模式运行。

有没有人有什么想法?

谢谢

最佳答案

使用 Eclipse 本身,人们通常不会尝试将构建的 JAR 部署到目标并让它在 Debug模式下运行。相反,在部署新构建的 jar 并使用各种调试/挂起标志启动它以允许您远程连接到它之后,可以在 Eclipse 中启动远程调试 session 。

有多种部署方法。

最直接的方法是简单地在 Eclipse 中(或通过 ant 在命令行中或使用您正在使用的任何构建工具)手动执行常规操作 < em>scp jar 到远程位置,然后 ssh 进入盒子并使用必要的命令启动应用程序。

另一种选择是使用部署框架,例如 fabric(用 Python 编写),它将执行构建,scp 到您的远程位置,然后运行您需要运行的任何命令以使其启动并运行(即首先停止现有的 Tomcat 实例等或任何情况)。您可以在fabfile 中设置不同的环境,例如debugprod,因此您可以在debug 中部署它> 适用于您正在寻找的案例的模式,然后在 prod 模式下它会正常部署并运行。

如果您正在使用 Gradle,它有一些工具,例如 Cargo,可以帮助远程部署,或者对于更简单的用例,使用 ssh 插件并更直接地管理事物(更多详细信息请参见 http://java.dzone.com/articles/replace-your-scripts-gradle)。

根据 OP 的评论进行编辑:

我自己没有使用过 Remote System Explorer,但它似乎是 extensible在某种程度上(请参阅服务和子系统层),尽管从根本上讲它似乎仍然以 UI 为中心。

对于这种用例,我建议再看一下 Gradle,因为它专注于构建,具有很强的可扩展性,并且可以集成到 Eclipse 中或完全运行在命令行上。

关于使用 Eclipse 或其他方式在 linux 目标上进行 Java 远程调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24984274/

相关文章:

java - 如何将此排序映射方法从 java 转换为 Kotlin

java - 什么是 float 组?

java - 如何在Eclipse中自定义 'new'选项

java - 如何在 Java Maven 项目的命令提示符中执行 'project > clean'

android - 从一个 Activity 更改为另一个 Activity 会导致 App 崩溃

java - 在 Eclipse 中发布应用程序时替换属性文件的内容

java - javafx webview/webengine 上的自定义上下文菜单

linux - linux下AT命令重定向到microcom命令

.net - Mono WCF InstanceContextMode 不工作

linux - Tesseract 不使用路径变量