首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使系统属性是在命令行中定义的,也是空的。

即使系统属性是在命令行中定义的,也是空的。
EN

Stack Overflow用户
提问于 2012-11-21 15:13:21
回答 1查看 2.4K关注 0票数 4

我正在调试一个大型系统中的问题。我在一个相当基本的java特性中找到了这个问题--这个应用程序是用-D选项启动的,以指定一些系统属性。但是,在运行期间,没有设置上述属性,它们的值为null.

为了重现这个问题,我创建了以下非常简单的应用程序:

代码语言:javascript
复制
  public static void main(String[] args) {
    String propName = "sysprop";
    String propValue = System.getProperty(propName);
    System.out.println(propName + "=" + propValue);
  }

我使用以下命令行启动应用程序,令我惊讶的是得到了相同的结果:

java -cp javaapplication8.jar javaapplication8.JavaApplication8 -Dsysprop=“一些值” sysprop=null

显然,我遗漏了一些显而易见的东西(或缺乏一些基本知识),但它是什么呢?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-21 15:16:04

您是在类名之后指定-D的,因此它被视为要传递给应用程序本身的常规命令行参数。如果在args中打印出这些值,您就会看到这一点。

像这样运行这个应用程序:

代码语言:javascript
复制
java -cp javaapplication8.jar -Dsysprop="some value" javaapplication8.JavaApplication8 

所有适用于环境而不是应用程序的参数都应该放在类名之前。如果您只运行java,您将看到这样的使用帮助:

代码语言:javascript
复制
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)
where options include
[...]
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13496226

复制
相关文章

相似问题

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