如何在Windows PowerShell后台运行Java app.jar程序?
PowerShell后台运行Java Jar包的解决方案
方案1:使用Start-Process(推荐)
这是PowerShell中最可靠的后台运行外部程序的方式,能精准控制运行环境:
Start-Process -FilePath java -ArgumentList "-jar app.jar" -NoNewWindow -WorkingDirectory (Get-Location) -WindowStyle Hidden
-NoNewWindow:避免弹出新的命令行窗口-WorkingDirectory (Get-Location):指定当前目录为工作目录,确保能找到app.jar-WindowStyle Hidden:彻底隐藏程序窗口,完全后台运行
如果需要后续管理进程,可加上-PassThru参数获取进程对象:
$process = Start-Process -FilePath java -ArgumentList "-jar app.jar" -NoNewWindow -WorkingDirectory (Get-Location) -WindowStyle Hidden -PassThru # 终止进程示例 $process | Stop-Process
方案2:修正Start-Job的用法
Start-Job默认在独立会话中执行,工作目录并非当前目录,导致找不到jar包,可通过以下方式修正:
方式A:传递当前目录到Job会话
Start-Job -ScriptBlock { & java -jar "$using:PWD\app.jar" }
$using:PWD会将当前PowerShell会话的工作目录传递给Job环境,确保能定位到app.jar。
方式B:使用绝对路径
直接指定jar包的绝对路径,无需依赖工作目录:
Start-Job -Command { java -jar "C:\your\full\path\to\app.jar" }
之后可通过Get-Job查看任务状态,Receive-Job获取程序输出。
方案3:借助CMD的start /B(类似Linux的&)
利用CMD的后台运行特性,直接在PowerShell中执行:
cmd /c start /B java -jar app.jar
start /B会让程序在后台运行,不占用当前PowerShell会话,效果类似Linux的&符号。
内容的提问来源于stack exchange,提问作者Springhills
相关产品推荐
相关产品推荐

