谁能告诉我在 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 中设置不同的环境,例如debug 和prod,因此您可以在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/