Question

Y at-il un moyen plus facile de spécifier plusieurs propriétés du système sur la ligne de commande à 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 vu un exemple de quelqu'un en utilisant un -D et une chaîne entre guillemets après, mais je ne trouve pas l'exemple à nouveau.

Était-ce utile?

La solution

La réponse est non. Vous auriez pu voir un exemple où quelqu'un aurait mis quelque chose comme:

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

Ensuite, l'application serait d'analyser la valeur de la chaîne de propriété Arguments pour obtenir des valeurs individuelles. Dans votre main vous pouvez obtenir les valeurs clés (format d'entrée est garantie En supposant):

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 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

Autres conseils

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

Il n'y a rien sur le Documentation mentionne au sujet de quelque chose comme ça.

Voici une citation:

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

java -Dfoo = "une chaîne" SomeClass

Vous pouvez être en mesure d'utiliser la variable d'environnement JAVA_TOOL_OPTIONS aux options définies. Il a travaillé pour moi avec Rasbian. Voir Variables d'environnement et Propriétés système qui a ceci à dire:

Dans de nombreux environnements, la ligne de commande ne sont pas facilement accessibles à démarrer l'application avec les options de ligne de commande nécessaire.

Cela arrive souvent avec des applications qui utilisent les machines virtuelles intégrées (sens ils utilisent Java Native Interface (JNI) API pour démarrer l'invocation VM), ou lorsque le démarrage est profondément imbriquée dans les scripts. Dans ces environnements variable d'environnement JAVA_TOOL_OPTIONS peut être utile pour augmenter une ligne de commande.

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

Cependant cet environnement utilisation variable peut être désactivé pour des raisons de sécurité.

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

Voir cet exemple montrant la différence entre la spécification sur la ligne de commande par rapport à l'aide de la variable d'environnement JAVA_TOOL_OPTIONS.

Si les propriétés requises doivent ensemble dans le système alors il n'y a pas d'option que -D Mais si vous avez besoin de ces propriétés en bootstrapping une application alors des propriétés de chargement à travers les fichiers proerties est une meilleure option. Il ne nécessite pas de changer pour construire une seule propriété.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top