【问题标题】:In Java -D what does the D stand for?在 Java -D 中,D 代表什么?
【发布时间】:2012-09-13 04:18:41
【问题描述】:

D 代表什么

-Dproperty=value

设置系统属性值。

Java application launcher 代表什么?不知为何一直困扰着我,为什么是 D?

【问题讨论】:

    标签: java properties


    【解决方案1】:

    在 C/C++ 编译器中,类似的语法用于从命令行定义预处理器宏:

    #include <stdio.h>
    int main(int argc, char* argv[]) {
        printf(GREETING);
        return 0;
    }
    

    .

    gcc hello.c -DGREETING="\"Hello, world\""
    

    Java 没有预处理器,但使用-D 定义的属性通常用于类似的原因 - 传递有关当前环境的一些程序特定信息。唯一的区别是在 Java 中我们在运行时而不是在编译时传递它们:

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

    .

    java -Dgreeting="Hello, world" Hello
    

    我认为这种相似性是相似语法的来源。

    【讨论】:

    • 感谢 C/C++ 的详细信息,从那里继承 -D 是有道理的。
    【解决方案2】:

    我一直认为它是定义属性的值...可能是 C 编译器的遗留物,它经常在代码中使用 -D#define 类似。

    编辑:目前我最接近的来源是some JDK 1.1 documentation,它将标志指定为:

    重新定义属性值。 propertyName 是您要更改其值的属性的名称,而 newValue 是要将其更改为的值。 [...]

    至少包含接近“定义”的“重新定义”一词:)

    【讨论】:

    • 如果有的话,我很想看看这个来源。
    • 嗨乔恩,这与这个问题并不完全相关,但我在其他任何地方都找不到这个信息,我从文档中读到:docs.oracle.com/javase/7/docs/technotes/tools/windows/java.htmljava -Dmydir="some string" SomeClass@ 的一部分987654326@是指哪个类?我使用它来获取外部.properties 文件修改我的程序的某些属性,使用 Spring、Struts2 和 Tomcat 8.5。我的想法是它指的是使用 main 方法的类,但在我的情况下,不存在 main 方法,因为它是一个 Web 应用程序,你能给我解释一下吗?
    • @Frakcool:是的,它是流程的入口点。当您运行 Tomcat 时,通常不会以这种方式调用它。我建议您提出一个新问题,详细说明您的问题。
    【解决方案3】:

    可能是针对Define,因为您正在定义一个属性

    【讨论】:

      【解决方案4】:

      原因是 D 代表 DEFINE,因为该命令开关所做的是定义变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-17
        • 2019-06-26
        • 2012-11-04
        • 1970-01-01
        • 2012-02-05
        • 2017-02-27
        • 2013-07-16
        相关资源
        最近更新 更多