【问题标题】:Java setting system property using command lineJava使用命令行设置系统属性
【发布时间】:2015-09-21 13:11:34
【问题描述】:

在阅读 java man 页面时,我发现了 -Dproperty=value 标志,该标志表明通过传递此标志,它将创建一个 value = value 的系统属性。 我写了一个测试java代码:

class File{
    public static void main(String[] args){
        System.out.println("HOLA");
        System.out.println(System.getProperty("blah"));
    }
}

我用javac File.java 编译了相同的内容,然后用命令java File -Dblah=blah 运行,但我得到了以下输出

HOLA
null

然后我以java -Dblah=blah File 运行,然后我得到了预期的输出:

HOLA
blah

问题是:这是错误还是故意行为。这似乎是一个错误,因为在大多数程序中,命令行中的顺序并不重要。

【问题讨论】:

    标签: java command-line jvm-arguments system-properties


    【解决方案1】:

    系统属性(以及类路径等其他选项)需要在程序参数之前传递。见usage page

    java [ options ] class [ arguments ]
    

    【讨论】:

      【解决方案2】:

      -D 需要出现在类名之前,因为类名之后 中的任何内容都被视为 Java 应用程序本身的参数......而Java 应用程序可以选择使用 -D 或任何其他 JVM 选项做任何它喜欢的事情。

      基本上,语法是:

      java [jvm-args] class-name [application-args]
      

      【讨论】:

        猜你喜欢
        • 2011-11-13
        • 2011-08-08
        • 2014-12-15
        • 1970-01-01
        • 2015-07-03
        • 2014-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多