如何将属性从Powershell传递到jar?

2022-09-02 19:52:29

我一直在使用Powershell-1.0来满足命令行需求一段时间,而不是cmd.exe。不幸的是,在使用Java时仍然有一些警告。我需要将一个属性传递给一个 jar,如下所示:

java -jar -Duser.language=en any.jar

此行在 cmd.exe 中工作正常,但在 Powershell 中不起作用,因为它会搜索另一个 jar:

无法访问 jarfile user.language=en

使用引号无济于事。

它在Powershell-1.0中是可行的,还是我在Java中错过了一些东西?


答案 1

看看我对这个问题的回答。请注意如何使用 echoargs.exe 来诊断此类问题。最有可能的修复方法是引用参数,例如:

java -jar "-Duser.language=en" any.jar

你可以使用 echoargs(来自 PowerShell Community Extensions)进行测试

echoargs -jar "-Duser.language=en" any.jar
Arg 0 is <-jar>
Arg 1 is <-Duser.language=en>
Arg 2 is <any.jar>

答案 2

在Windows 7上的PowerShell中使用引号对我来说很好。

java "-Dmy.property=value" -jar myjar.jar

请注意:jar 名称必须放在 之后,而放在后面的参数将被传递给 jarFile 中的程序。-jar-jar myjar.jar