我在SO上检查了很多关于这个问题的其他答案,但是它们中的任何一个似乎都没有真正地,正确地工作。此外,这些例子并不适合我的用例。
我有一个java应用程序jar,它有一个主类。我想用以下参数运行它:
-Xms1300m -Xmx1300m -classpath "myClassPath;anotherone;anotherOne" -Xdebug -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
当我尝试在我的powershell脚本(而不是命令行)上使用以下命令运行它时,我总是得到以下内容
Start-Process java -ArgumentList '-Xms1300m -Xmx1300m -classpath "myClassPath;anotherone;anotherOne" -Xdebug -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 the.jar.in.myClassPath.mainClass startArgs
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
6 2 204 704 7 0.00 3588 1 java
我的java主路径在环境变量中正确设置,因此没有任何错误。
我运行了参数集的回声,它们看起来是正确的。我有点卡在这里弄清楚为什么这会导致问题?与DOS相比,Powershell更复杂,因为当我在DOS命令提示符下运行它时,它才有效。那么我在这里出了什么问题?
问候,
答案 0 :(得分:1)
为什么Start-Process
?只需运行命令,引用所需的参数即可。您应该能够以这种方式运行它:
java -Xms1300m -Xmx1300m -classpath "myClassPath;anotherone;anotherOne" -Xdebug "-Djava.compiler=NONE" "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
注意:
引用-classpath
的参数,因为它包含;
个字符。
引用-D
及其附加参数,因为它包含.
字符。
引用-X
及其附加参数,因为它包含,
和=
个字符。
基本上:引用一个参数,其中包含对PowerShell具有语法意义的字符。
您可以使用我编写的名为showargs.exe
的便捷程序对可执行参数传递进行故障排除,您可以从下载与以下文章相关的代码中获取该程序: