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运行完全相同的命令才能正常工作。
答案 0 :(得分:2)
你可以尝试:
PS> $a = "java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n <application>"
PS> Invoke-Expression $a
我认为PowerShell尝试在命令行中解释某些内容。这样PowerShell就必须执行。小心,如果您的应用程序名称中有双引号,请使用`before。
您也可以尝试此操作,以便参与通话。
$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 param。
答案 1 :(得分: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或更高版本时使用后者,而forner适用于目标VM早于5.0的计算机
答案 2 :(得分:0)
根据上述答案,我无法弄清楚它为什么不起作用。 我使用了以下工作
-agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=y