Как свойства, предоставляемые в командной строке, доступны в Java? - PullRequest
2 голосов
/ 15 июля 2010
java -Ddata=args -Dcommit=no -jar post.jar

В приведенном выше сценарии как data и commit доступны в java ?

Ответы [ 3 ]

5 голосов
/ 15 июля 2010

Вы используете System.getProperty:

System.getProperty("data");
System.getProperty("commit");

Как следует из названия, это системные свойства, а не аргументы командной строки, как предполагает ваш заголовок.Аргументы командной строки будут java -jar post.jar arg1 arg2

2 голосов
/ 15 июля 2010

В вашей основной функции вы передали строковый массив, содержащий аргументы.

В руководстве по Java есть программа, которая покажет вам, как это работает:

public class Echo {
    public static void main (String[] args) {
        for (String s: args) {
            System.out.println(s);
        }
    }
}

Но это толькоаргументы даны вашему коду.Те из них, которые вы показали, передаются самому интерпретатору Java, и вы можете использовать System.getProperty() для доступа к ним:

String data = System.getProperty ("data");
String commit = System.getProperty ("commit");
0 голосов
/ 15 июля 2010

Для примера -D

   String foo = java.lang.System.getProperty("data");

См. http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/api/java/lang/System.html#getProperty(java.lang.String)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...