The most intelligent Java IDE
[Logo] JavaRanch » Big Moose Saloon
  Search | FAQ | Recent Topics | Hot Topics
Register / Login


Reply Bookmark it! Watch this topic JavaRanch » Forums » Professional Certification » Associate Certification (SCJA)
 
RSS feed
 
New topic
Author

What is the java -D command-line option good for?

Peter Heide
Greenhorn

Joined: Nov 04, 2006
Messages: 28

One of the SCJA Exam Objectives is:

demonstrate the proper use of the "java" command including the command-line option -D

The java jdk documentation specifies:

-Dproperty=value
Set a system property value. If value is a string that contains spaces, you must enclose the string in double quotes:
java -Dfoo="some string" SomeClass

My question is: How can I access this property value in the code. Does someone have an example?

SCJA
Paul Anil
Author
Ranch Hand

Joined: Sep 23, 2000
Messages: 1730

-D is an important switch that allows you to set environment properties.

You can call the following from anywhere in the code to read the properties given on the command line:

String value = System.getProperty("key", "defaultvalue");

Enthuware - Resources for Sun Java Certifications! -SCJP, SCWCD, SCBCD, SCJA, SCMAD
Sample SCJD Project
Cameron Wallace McKenzie
author and cow tipper
Bartender

Joined: Aug 26, 2006
Messages: 4603

A JVM runs with a number of system properties. You can configure system properties by using the -D option, pronounced with an upper case 'D'

All you have to do i suse the -D flag, and provide the system prperty name immediately following the D, and equals sign, and then the value to be assigned to the property. For example, to set the file.encoding property of the Java runtime to utf-8, you could set the following property:

java -Dfile.encoding=utf-8

You can then grab the value programatically as follows:

System.getProperty("file.encoding"); /*this method is overloaded, as per previous post*/

System geProperty JavaDoc

Don't confuse the -D switch with the -d switch. Both are tested on the SCJA exam, but both do different things. Casing is important!

Some of the default properties that are supposed to have already been set include: file.encoding, file.separator, java.home and java.version.


Cheers!

-Cameron McKenzie

[ November 05, 2006: Message edited by: Cameron W. McKenzie ]
[ November 05, 2006: Message edited by: Cameron W. McKenzie ]

Author of Hibernate Made Easy, What is WebSphere???, Portlet Programming Made Easy and the SCJA Certification Guides
My Hibernate and JPA Tutorials * My Mock Java Certification Exams * My Online Java Tutorials * My CBT Portlet Tutorials.

Peter Heide
Greenhorn

Joined: Nov 04, 2006
Messages: 28

I used the following class:



Then I tried:

javac hello.java
java -Dhello=world hello

The output was:

hello=world

So the solution of Paul and Cameron worked well.

SCJA
a haksdjf
Greenhorn

Joined: Nov 22, 2009
Messages: 1

Peter Heide wrote:One of the SCJA Exam Objectives is:

demonstrate the proper use of the "java" command including the command-line option -D

The java jdk documentation specifies:

-Dproperty=value
Set a system property value. If value is a string that contains spaces, you must enclose the string in double quotes:
java -Dfoo="some string" SomeClass

My question is: How can I access this property value in the code. Does someone have an example?


Can someone let me know how I and specify multiple key/value pairs?

Thanks,
Olivier Fresse
Greenhorn

Joined: Dec 10, 2009
Messages: 1

a haksdjf wrote:

Can someone let me know how I and specify multiple key/value pairs?

Thanks,


Use several -D arguments



Basically, it's text. You can also do something like :



then you need to analyze the string key:val,key2:val2,key3:val3
to split it and get the key:val strings.
And you can split these again to get key and val.
String tokenizer is your friend Or regexp :-)

 
 
 
Reply Bookmark it! Watch this topic JavaRanch » Forums » Professional Certification » Associate Certification (SCJA)
 
RSS feed
 
New topic
hibernate profiler