Java-alternativet -D: systemegenskaper, syntax och exempel


Publicerad:

Uppdaterad:


Tekniska artiklar > Java-alternativet -D: systemegenskaper, syntax och exempel

Status 2026 och säker användning

Slutsats: Ange -Dname=value före huvudklassen eller -jar-argumentet för att definiera en systemegenskap i JVM. Java-koden läser värdet med System.getProperty("name"). En systemegenskap är inte samma sak som en miljövariabel i operativsystemet.

Det här går artikeln igenom

  • Hur Java-startprogrammet analyserar -D-alternativ och var värdet lagras.
  • Hur egenskaper kan granskas utan att hemligheter exponeras på kommandoraden eller i processlistor.
  • Hur det ursprungliga exemplet för Java 11 förhåller sig till aktuella JDK-versioner med support.

Målgrupp: Java-utvecklare och drifttekniker som felsöker miljöspecifik programkonfiguration.

Läge 2026: Mekanismen är fortfarande aktuell, men autentiseringsuppgifter bör lagras i en hemlighetshanterare eller en annan skyddad konfigurationskälla. Genomgången dokumenterar det ursprungliga testet med Java 11 och är inte en rekommendation att lägga hemligheter i -D-argument.

Säkerhetsinformation: Kommandona och konfigurationsexemplen i originalartikeln har inte testats på nytt i en aktuell produktionsmiljö. Kontrollera versioner med support, säkerhetskopior, åtkomstkontroller och återställningssteg i en separat testmiljö innan de används.

Viktiga officiella källor

Översikt

När Java startas anges ibland "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" på kommandoraden eller under "Execution environment ⇒ VM arguments" i Eclipse.

Eclipse-skärm

Här förklaras vad som händer när ett sådant "-DXXXXXXXX"-alternativ läggs till.

Innehållsförteckning

  1. Vad är alternativet -D?
  2. Sammanfattning

1. Vad är alternativet -D?

Alternativet -D definierar en systemegenskap när Java startas.

Följande exempel visar vad som händer när en systemegenskap får ett värde.

1-1. Vad händer när Java körs med alternativet -D?

I Eclipse används alternativet "-Dtest=testoption". Ange det som i bilden nedan.

Eclipse-skärm

Skapa en enkel huvudklass som visas nedan.

Eclipse-skärm

När huvudklassen körs hämtas värdet "testoption" genom att "test" skickas till System.getProperty, enligt resultatet nedan.

Eclipse-skärm

När en systemegenskap anges vid Java-start kan programmet alltså hämta värdet via klassen System.

2. Sammanfattning

Alternativet -D anger en systemegenskap vid Java-start, och värdet kan sedan hämtas via klassen System. Det är användbart när en konfiguration ska variera mellan olika miljöer.

Använd -D för vanlig miljöspecifik konfiguration, men inte för hemligheter som kan exponeras i processlistor eller loggar.