71 votes

Définir plusieurs propriétés du système Ligne de commande Java

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

J'essaie d'éviter ça :

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

Je pensais avoir vu un exemple de quelqu'un qui en utilisait un. -D et une chaîne entre guillemets après cela, mais je ne retrouve pas l'exemple.

62voto

ring bearer Points 8369

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

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

Ensuite, l'application analysera la valeur de Arguments pour obtenir les valeurs individuelles. Dans votre main vous pouvez obtenir les valeurs des clés comme (en supposant que le format d'entrée est 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]);
    }
}

En outre, le -D doit se trouver avant la classe principale ou la classe jar dans la ligne de commande java. Exemple : java -DArguments=a=1,b=2,c=3,d=4,e=cow MainClass

20voto

adarshr Points 25912

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

Voici une citation :

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

java -Dfoo="une chaîne de caractères" SomeClass

16voto

Dimitri Points 2261

Au lieu de passer les propriétés comme argument, vous pouvez utiliser un .properties pour les stocker.

7voto

Richard Chambers Points 3586

Vous pouvez utiliser le JAVA_TOOL_OPTIONS variable d'environnement pour définir les options. Cela a fonctionné pour moi avec Rasbian. Voir Variables d'environnement et propriétés du système qui dit ceci :

Dans de nombreux environnements, la ligne de commande n'est pas facilement accessible à lancer l'application avec les options de ligne de commande nécessaires.

Cela se produit souvent avec les applications qui utilisent l'em qu'elles utilisent l'API d'invocation de la Java Native Interface (JNI) pour démarrer la VM), ou lorsque le démarrage est profondément imbriqué dans des scripts. Dans ces Dans ces environnements, la variable d'environnement JAVA_TOOL_OPTIONS peut être utile pour compléter une ligne de commande.

Lorsque cette variable d'environnement est définie, la fonction JNI_CreateJavaVM (dans l'API d'invocation JNI), la fonction JNI_CreateJavaVM ajoute la valeur de la variable d'environnement aux options fournies dans son argument JavaVMInitArgs.

Cependant, l'utilisation de cette variable d'environnement peut être désactivée pour des raisons de sécurité.

Dans certains cas, cette option est désactivée pour des raisons de sécurité. Par exemple, Par exemple, sur le système d'exploitation Oracle Solaris, cette option est désactivée lorsque l'ID effectif de l'utilisateur ou du groupe diffère de l'ID réel. désactivée lorsque l'ID effectif de l'utilisateur ou du groupe diffère de l'ID réel.

Voir cet exemple montrant la différence entre la spécification sur la ligne de commande et l'utilisation de la fonction JAVA_TOOL_OPTIONS variable d'environnement.

screenshot showing use of JAVA_TOOL_OPTIONS environment variable

0voto

SUKHDEV PATIL Points 27

Si les propriétés requises doivent être définies dans le système, il n'y a pas d'autre option que -D. Mais si vous avez besoin de ces propriétés lors de l'amorçage d'une application, le chargement des propriétés via les fichiers de propriétés est la meilleure option. Il ne sera pas nécessaire de modifier la compilation pour une seule propriété.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X