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.
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
Au lieu de transmettre les propriétés sous forme d'argument, vous pouvez utiliser un fichier .properties pour les stocker.
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
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é.