web-dev-qa-db-fra.com

Définir plusieurs propriétés système Java en ligne de commande

Existe-t-il un moyen plus simple de spécifier plusieurs propriétés système sur la ligne de commande dans un programme Java plutôt que d’avoir plusieurs instructions -D?

Essayer d'éviter ceci:

 Java -jar -DNAME="myName" -DVERSION="1.0" -DLOCATION="home" program.jar

Je pensais avoir déjà vu un exemple d'utilisation de l'un -D Et d'une chaîne entre guillemets après cela, mais je ne retrouve plus l'exemple.

59
Tyler DeWitt

La réponse est NON. Vous avez peut-être vu un exemple où quelqu'un aurait défini quelque chose comme:

-DArguments=a=1,b=2,c=3,d=4,e=cow

Ensuite, l’application analyserait la valeur de Arguments chaîne de propriété pour obtenir des valeurs individuelles. Dans votre main, vous pouvez obtenir les valeurs de clé comme suit (le format d'entrée est supposé garanti):

String line = System.getProperty("Arguments");
if(line != null) {
  String str[] = line.split(",");
    for(int i=1;i<str.length;i++){
        String arr[] = str[i].split("=");
        System.out.println("Key = " + arr[0]);
        System.out.println("Value = " +  arr[1]);
    }
}

Également -D devrait être avant la classe principale ou le fichier jar dans la ligne de commande Java. Exemple: Java -DArguments=a=1,b=2,c=3,d=4,e=cow MainClass

50
ring bearer

Au lieu de transmettre les propriétés sous forme d'argument, vous pouvez utiliser un fichier .properties pour les stocker.

15
Dimitri

Il n'y a rien sur la Documentation qui mentionne quelque chose comme ça.

Voici une citation:

-Dproperty = valeur Définit une valeur de propriété système. Si valeur est une chaîne contenant des espaces, vous devez la placer entre guillemets:

Java -Dfoo = "une chaîne" SomeClass

14
adarshr

Si les propriétés requises doivent être définies dans le système, l'option -D n'existe pas. Si vous avez besoin de ces propriétés lors du démarrage d'une application, le chargement des propriétés par le biais des fichiers de propriétés est la meilleure option. Il ne sera pas nécessaire de modifier la construction pour une seule propriété.

1
SUKHDEV PATIL