首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将属性从Powershell传递给jar?

如何将属性从Powershell传递给jar?
EN

Stack Overflow用户
提问于 2009-10-05 07:40:14
回答 3查看 13.2K关注 0票数 18

我已经使用Powershell-1.0来满足命令行的需求,而不是使用cmd.exe。不幸的是,在使用Java时仍然有一些警告。我需要把一个属性传递给一个罐子,就像这样:

代码语言:javascript
复制
java -jar -Duser.language=en any.jar

这一行在cmd.exe中运行得很好,但在Powershell中却不起作用,因为它在搜索另一个jar:

无法访问jarfile user.language=en

用引号没什么用。

它在Powershell-1.0中是可行的吗?还是我忽略了Java中的一些东西?

EN

回答 3

Stack Overflow用户

发布于 2009-10-05 14:17:05

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

代码语言:javascript
复制
java -jar "-Duser.language=en" any.jar

您可以使用echoargs (来自PowerShell社区扩展)进行测试:

代码语言:javascript
复制
echoargs -jar "-Duser.language=en" any.jar
Arg 0 is <-jar>
Arg 1 is <-Duser.language=en>
Arg 2 is <any.jar>
票数 28
EN

Stack Overflow用户

发布于 2011-11-03 09:32:06

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

代码语言:javascript
复制
java "-Dmy.property=value" -jar myjar.jar

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

票数 13
EN

Stack Overflow用户

发布于 2009-10-05 07:48:18

尝试使用以下模式启动:

代码语言:javascript
复制
java -Duser.language=en -jar any.jar

这假设user.language是指系统属性。如果您的意思是将其作为命令行参数,请将其更改为:

代码语言:javascript
复制
java -jar any.jar -Duser.language=en

实际上我很惊讶您提到的命令行在powershell之外工作(尽管我已经确认它对我也很好,即使在Linux上也是如此),而且在powershell内部和外部,事情会有不同的工作方式,这也有点奇怪。

来自java -help

代码语言:javascript
复制
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设置系统属性)之后。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1518698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档