从Powershell运行Java Jar

时间:2018-02-16 12:59:48

标签: java powershell

我在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命令提示符下运行它时,它才有效。那么我在这里出了什么问题?

问候,

1 个答案:

答案 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"

注意:

  1. 引用-classpath的参数,因为它包含;个字符。

  2. 引用-D及其附加参数,因为它包含.字符。

  3. 引用-X及其附加参数,因为它包含,=个字符。

  4. 基本上:引用一个参数,其中包含对PowerShell具有语法意义的字符。

    您可以使用我编写的名为showargs.exe的便捷程序对可执行参数传递进行故障排除,您可以从下载与以下文章相关的代码中获取该程序:

    IT Pro Today - Running Executables in PowerShell