有人能告诉我在linux目标上远程调试Java的好方法吗?
我之后是构建我的Java项目,部署到目标然后在目标上调试的方法。 我知道java可以通过启动带有调试标志的JAR来调试目标 e.g。
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y suspend=y -jar stockTradingGUI.jar
但我不知道如何触发将已构建的JAR部署到目标并通过Eclipse以调试模式运行。
有没有人有任何想法?
由于
答案 0 :(得分:3)
使用 Eclipse 本身,人们通常不会尝试将构建的JAR部署到目标并让它以调试模式运行。相反,在部署新构建的jar并使用各种调试/挂起标志启动它之后,可以在 Eclipse 中启动远程调试会话,以允许您远程连接到它。
有多种方法可以进行部署。
最简单的方法是简单地执行常规内置的 Eclipse (或通过 ant 在命令行中使用或使用您正在使用的任何构建工具),手动< em> scp 将jar转到远程位置,将 ssh 放入框中,然后使用必要的命令启动应用程序。
另一种选择是使用部署框架,例如 fabric (用 Python 编写),它将进行构建, scp 将其转换为您的远程位置,然后运行您需要运行的任何命令,以便启动并运行(即首先停止现有的 Tomcat 实例等,或者不管情况如何)。您可以在 fabfile 中设置不同的环境,例如 debug 和 prod ,这样您就可以在 debug 中部署它>模式适用于您现在正在寻找的情况,然后在 prod 模式下,它会正常部署并运行。
如果您使用 Gradle ,它有一些工具,例如 Cargo 可以帮助进行远程部署,或者使用 ssh <更简单的用例/ em>插件和更直接地管理事物(有关详细信息,请参阅http://java.dzone.com/articles/replace-your-scripts-gradle)。
根据OP的评论进行编辑:
我自己没有使用过远程系统资源管理器,但它在某种程度上似乎是extensible(参见服务和子系统层),尽管从根本上说它似乎仍然存在以UI为中心。
对于这种用例,我建议给予 Gradle 另一种外观,因为它专注于构建,非常易于扩展,并且可以集成到 Eclipse 或完全在命令行上运行。