我已经使用Powershell-1.0来满足命令行的需求,而不是使用cmd.exe。不幸的是,在使用Java时仍然有一些警告。我需要把一个属性传递给一个罐子,就像这样:
java -jar -Duser.language=en any.jar这一行在cmd.exe中运行得很好,但在Powershell中却不起作用,因为它在搜索另一个jar:
无法访问jarfile user.language=en
用引号没什么用。
它在Powershell-1.0中是可行的吗?还是我忽略了Java中的一些东西?
发布于 2009-10-05 14:17:05
看看我对这个问题的回答。请注意如何使用echoargs.exe来诊断此类问题。最有可能的方法是引用参数,例如:
java -jar "-Duser.language=en" any.jar您可以使用echoargs (来自PowerShell社区扩展)进行测试:
echoargs -jar "-Duser.language=en" any.jar
Arg 0 is <-jar>
Arg 1 is <-Duser.language=en>
Arg 2 is <any.jar>发布于 2011-11-03 09:32:06
在Windows 7上的PowerShell中,使用引号对我来说很好。
java "-Dmy.property=value" -jar myjar.jar注意: jar名称必须放在-jar之后,而放在-jar myjar.jar之后的参数将传递给jarFile中的程序。
发布于 2009-10-05 07:48:18
尝试使用以下模式启动:
java -Duser.language=en -jar any.jar这假设user.language是指系统属性。如果您的意思是将其作为命令行参数,请将其更改为:
java -jar any.jar -Duser.language=en实际上我很惊讶您提到的命令行在powershell之外工作(尽管我已经确认它对我也很好,即使在Linux上也是如此),而且在powershell内部和外部,事情会有不同的工作方式,这也有点奇怪。
来自java -help
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
...
-D<name>=<value>
set a system property
...因此,基本上,您应该始终将JAR文件名直接放在-jar命令行选项之后,以及之前的任何JVM选项(例如用-D设置系统属性)之后。
https://stackoverflow.com/questions/1518698
复制相似问题