How to pass system properties to a jar file

I have a main class that expects certain properties that I pass using the -D option. I can access this in my IDE by sending them as VM options.

I package this application into a jar file using Maven and when I try the following:

java -jar myjar.jar -Denviroment=dev

or

java -jar myjar.jar "-Denvironment=dev"

The enviroment system property is not getting picked up.

Any pointers on what is going on?


Solution 1:

Pass the arguments before the -jar. If you pass them after the jar file they are interpreted as command line parameters and passed to the String[] args in main. Like,

java -Denviroment=dev -jar myjar.jar 

Solution 2:

Adding to Elliott's answer, if I just run this then I get an error:

java -Djna.nosys=true -jar jenkins.war

but if I add quotes like this then it works:

java "-Djna.nosys=true" -jar jenkins.war