使用powershell运行java-jar
啊,地狱 好的,我已经读了很多其他的答案,但是没有一个有效 我想要做的是有一个powershell脚本,它将打开一个jar或打开一个带有参数的jar。这应该很简单,但我无法用Microsoft的powershell文档轻松找到正确的方法 runprogram.ps1使用powershell运行java-jar,java,powershell,Java,Powershell,啊,地狱 好的,我已经读了很多其他的答案,但是没有一个有效 我想要做的是有一个powershell脚本,它将打开一个jar或打开一个带有参数的jar。这应该很简单,但我无法用Microsoft的powershell文档轻松找到正确的方法 runprogram.ps1 #Pseudocode $PathToApp = "C:\App" IF $PathToApp exist THEN IF no additional argument THEN goto P
#Pseudocode
$PathToApp = "C:\App"
IF $PathToApp exist THEN
IF no additional argument THEN
goto PathToApp
Start-Process java -jar app.jar
ELSE IF additional argument THEN
goto PathToApp
Start-Process java -jar app.jar $arg
ENDIF
ELSE
print("Error path to app not set...")
ENDIF
然后我应该能够编写./runprogram.ps1或./runprogram.ps1 file.txt
根据其他stackoverflow帖子,我相信一个简单的答案不仅会帮助我自己,也会帮助很多其他人
谢谢你的阅读。即使你没有提供一个简单的方法,你能给我指出一些类似的例子吗,我可以一起和平相处。因为我和我确信其他人发现学习做这样一个简单的任务powershell很麻烦
编辑:以防将来有人发现这篇文章,这是我做的
param(
[string]$OpenFile
)
$AppPath = "C:\App.jar"
#Check if path exist
if (-not(Test-Path $AppPath)) {
write-error "Path to app not found..."
} else {
if(-not($OpenFile)) {
Start-Process -FilePath java.exe -ArgumentList "-jar $AppPath"
} else {
Start-Process -FilePath java.exe -ArgumentList "-jar $AppPath $OpenFile"
}
}
我希望这对其他人有所帮助。选项1[使用开始作业脚本块]
Start-Job -ScriptBlock {
& java -cp .\Runner.jar com.abc.bcd.Runner.java >console.out 2>console.err
}
if ( $? == "True")
write-host("Agent started successfully")
else if ($? == "False")
write-host("Agent did not start")
Start-Process -FilePath '.\jre\bin\java' -WindowStyle Hidden -Wait -ArgumentList "-cp .\Runner.jar com.abc.bcd.Runner"
选项2[使用启动流程]
Start-Job -ScriptBlock {
& java -cp .\Runner.jar com.abc.bcd.Runner.java >console.out 2>console.err
}
if ( $? == "True")
write-host("Agent started successfully")
else if ($? == "False")
write-host("Agent did not start")
Start-Process -FilePath '.\jre\bin\java' -WindowStyle Hidden -Wait -ArgumentList "-cp .\Runner.jar com.abc.bcd.Runner"
这就是我最初使用上述两个选项的方式
选项3[使用apache commons守护程序]
Start-Job -ScriptBlock {
& java -cp .\Runner.jar com.abc.bcd.Runner.java >console.out 2>console.err
}
if ( $? == "True")
write-host("Agent started successfully")
else if ($? == "False")
write-host("Agent did not start")
Start-Process -FilePath '.\jre\bin\java' -WindowStyle Hidden -Wait -ArgumentList "-cp .\Runner.jar com.abc.bcd.Runner"
我可以提出一个更好、更可靠的替代方案
您可以使用apachecommons守护程序
库为java应用程序
构建一个windows服务
,然后非常方便地启动、停止该服务
有一段令人惊叹的youtube视频将解释apache commons守护程序以及如何构建windows服务。我会在最后附上参考资料
参考文献:
如果您还需要apache commons daemon windows服务的所有步骤,请告诉我。我认为这篇文章对于如何从Powershell向
java.exe
传递参数有一个很好的答案:我想您试过&java-jar$argsclose了吗。。。