2

Windows 7 x64 和最新的 java 版本(虽然与 u21 并没有更好的工作)

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

尝试启动 java 应用程序进行远程调试时,出现以下错误:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n <application>
ERROR: JDWP option syntax error: -agentlib:jdwp=server=y transport=dt_socket address=4000 suspend=n

但只有在使用 PowerShell 时,使用 cmd.exe 运行完全相同的命令才能按预期工作。

4

3 回答 3

3

你能试一下吗 :

PS> $a = "java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n <application>"
PS> Invoke-Expression $a

我想 PowerShell 尝试在您的命令行中解释某些内容。这样 PowerShell 只需要执行。请注意,如果您的应用程序名称中有双引号,请在前面使用 `。

您也可以尝试此操作以参数化您的呼叫。

$scriptBlock = {java -Xdebug                                                         <# This is comment param 1 #>`
                     -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n   <# This is comment param 1 #>`
                     `"$($args[0])`"}                                                <# Application Path #>

$ApplicationName = "c:\un chemin applicatif\toto"
Invoke-Command -ScriptBlock $scriptBlock  -ArgumentList $ApplicationName

我找到了,试试:

PS> $a = "java -Xdebug '-Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n' <application>"

我只是将 -Xrunjdwp 参数包含在 '' 中。

于 2013-08-26T04:48:49.397 回答
1

代替:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n <application>

尝试使用:

java -agentlib:jdwp=server=y,transport=dt_socket,address=4000,suspend=n <application>

后者在目标 VM 为 5.0 或更高版本时使用,而前者用于目标 VM 早于 5.0 的机器

来源:Oracle 文档

于 2013-08-21T17:01:50.627 回答
0

根据上述答案,我无法弄清楚为什么它不起作用。我使用了以下并且有效

-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=y
于 2017-06-13T19:05:14.820 回答