【问题标题】:How to define an argument when debugging a remote Java application in Ecilpse?在 Eclipse 中调试远程 Java 应用程序时如何定义参数?
【发布时间】:2019-01-27 15:48:29
【问题描述】:
我正在尝试使用参数在 Linux 环境中调试远程 Java 应用程序。但是,我只能在调试 [本地] Java 应用程序时找到定义参数的选项。我试图定义的参数是java -Dsun.awt.disablegrab=true,以避免在我在事件处理程序中调试时系统挂起。鉴于此应用程序的性质,我无法在本地启动它;我只能将其作为远程 Java 应用程序进行调试,并将主机定义为 localhost。有没有办法使用上述参数为远程 Java 应用程序启动调试?
提前感谢大家!
【问题讨论】:
标签:
java
linux
eclipse
debugging
remote-debugging
【解决方案1】:
为了允许打开端口进行远程调试,应用程序(或其服务器)的启动将使用 Java 命令行参数进行参数化,例如类似于:
-Djava.compiler=NONE -Xdebug -Xnoagent
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=[your desired port]
当您在调试模式下启动进程时,我只需将您想要的参数添加到列表中。
在哪里可以找到启动配置取决于您正在运行的应用程序的类型。
由于您可能已经知道要连接的端口,您可能希望在您的配置文件中,在目标机器(即在您的本地机器中,在这种特定情况下)中 grep 它 - 这可能会给您一个想法您需要对什么资源进行更改。
澄清
这里的想法是,您的本地 Eclipse 在远程调试时不会启动应用程序,它只连接到您自己定义的套接字,并使用开放端口连接到您的目标机器。
因此,它取决于您的应用程序的启动配置(即在启动您的应用程序时如何参数化java 进程)来定义远程调试的套接字(如果需要)以及您可能需要的任何启动参数。