76 Stimmen

Mehrere Systemeigenschaften Java Befehlszeile setzen

Gibt es eine einfachere Möglichkeit, mehrere Systemeigenschaften auf der Befehlszeile an ein Java-Programm zu übergeben, anstatt mehrere -D-Anweisungen zu haben?

Versuchen Sie, dies zu vermeiden:

 java -jar -DNAME="meinName" -DVERSION="1.0" -DLOCATION="Zuhause" programm.jar

Ich dachte, ich hätte ein Beispiel gesehen, wie jemand ein -D und dann einige in Anführungszeichen gesetzte Zeichen verwendet, aber ich kann das Beispiel nicht mehr finden.

63voto

ring bearer Punkte 19605

Die Antwort lautet NEIN. Du hast vielleicht ein Beispiel gesehen, in dem jemand etwas wie folgt eingestellt hätte:

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

Dann würde die Anwendung den Wert des Arguments Eigenschaftsstrings analysieren, um individuelle Werte zu erhalten. In deinem main kannst du die Schlüsselwerte wie folgt erhalten (unter der Annahme, dass das Eingabeformat garantiert ist):

String line = System.getProperty("Arguments");
if(line != null) {
  String str[] = line.split(",");
    for(int i=1;i

20voto

adarshr Punkte 59219

Im Dokument wird nichts erwähnt, was so etwas beschreibt.

Hier ist ein Zitat:

-Dproperty=Wert Setzen Sie den Wert einer Systemeigenschaft. Wenn der Wert ein String ist, der Leerzeichen enthält, müssen Sie den String in Anführungszeichen setzen:

java -Dfoo="ein string" EineKlasse

17voto

Dimitri Punkte 7818

Anstatt die Eigenschaften als Argument zu übergeben, können Sie auch eine .properties-Datei verwenden, um sie zu speichern.

7voto

Richard Chambers Punkte 15587

Sie können möglicherweise die Umgebungsvariable JAVA_TOOL_OPTIONS verwenden, um Optionen festzulegen. Bei Rasbian hat es bei mir funktioniert. Siehe Umgebungsvariablen und Systemeigenschaften, wo es heißt:

In vielen Umgebungen ist die Befehlszeile nicht leicht zugänglich, um die Anwendung mit den erforderlichen Befehlszeilenoptionen zu starten.

Dies geschieht oft bei Anwendungen, die eingebettete VMs verwenden (d.h. sie verwenden die Java Native Interface (JNI) Invocation API, um die VM zu starten) oder bei denen der Start tief in Skripten verschachtelt ist. In solchen Umgebungen kann die Umgebungsvariable JAVA_TOOL_OPTIONS nützlich sein, um eine Befehlszeile zu ergänzen.

Wenn diese Umgebungsvariable gesetzt ist, fügt die Funktion JNI_CreateJavaVM (in der JNI Invocation API) den Wert der Umgebungsvariable den in ihrem JavaVMInitArgs-Argument übergebenen Optionen hinzu.

Jedoch kann die Verwendung dieser Umgebungsvariable aus Sicherheitsgründen deaktiviert sein.

In einigen Fällen ist diese Option aus Sicherheitsgründen deaktiviert. Zum Beispiel auf dem Oracle Solaris-Betriebssystem wird diese Option deaktiviert, wenn die effektive Benutzer- oder Gruppen-ID von der realen ID abweicht.

Sehen Sie sich dieses Beispiel an, das den Unterschied zwischen der Angabe auf der Befehlszeile und der Verwendung der Umgebungsvariable JAVA_TOOL_OPTIONS zeigt.

Screenshot, der die Verwendung der Umgebungsvariable JAVA_TOOL_OPTIONS zeigt

0voto

SUKHDEV PATIL Punkte 27

Wenn die erforderlichen Eigenschaften im System gesetzt werden müssen, gibt es keine andere Option als -D. Aber wenn Sie diese Eigenschaften beim Bootstrapping einer Anwendung benötigen, ist das Laden von Eigenschaften durch die Eigenschaftendateien die beste Option. Es erfordert keine Änderung am Build für eine einzelne Eigenschaft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X