This week's book giveaways are in the Java EE and JavaScript forums.
We're giving away four copies each of The Java EE 7 Tutorial Volume 1 or Volume 2(winners choice) and jQuery UI in Action and have the authors on-line!
See this thread and this one for details.
The moose likes Java in General and the fly likes access the evironment variable Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of The Java EE 7 Tutorial Volume 1 or Volume 2 this week in the Java EE forum
or jQuery UI in Action in the JavaScript forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "access the evironment variable" Watch "access the evironment variable" New topic

access the evironment variable

Hussein Baghdadi
clojure forum advocate

Joined: Nov 08, 2003
Posts: 3479

how can I access the environment variable of the OS inside my application ?
Tom Blough
Ranch Hand

Joined: Jul 31, 2003
Posts: 263

Tom Blough<br /> <blockquote><font size="1" face="Verdana, Arial">quote:</font><hr>Cum catapultae proscriptae erunt tum soli proscripti catapultas habebunt.<hr></blockquote>
Ernest Friedman-Hill
author and iconoclast

Joined: Jul 08, 2003
Posts: 24183

To expand on what Tom said:

Officially, you can't get the environment variables. The Javasoft folks have tried to avoid including things in Java that don't exist on all the platforms Java might be implemented on. There is a method getenv() in the java.lang.System class, but if you call it nowadays, it just throws an exception:

getenv no longer supported, use properties and -D instead.

So what you're supposed to do is use the -D switch to the Java runtime to pass "properties" in which are set to the values of the environment variables of interest; i.e., on Windows, something like:

[Jess in Action][AskingGoodQuestions]
Sol Mayer-Orn
Ranch Hand

Joined: Nov 13, 2002
Posts: 311
I could only answer for java 1.4 (haven't had a look at 1.5 yet).
There's no direct support for obtaining any environment variables. Java system properties are not identical to environment vars. There are some work arounds, non of them are 100 percent portable:

(1) Simplest and most recommended for simple cases: the batch invoking java will extract the environment variable & pass it as a java system property. For instance, passing windows environment variable PATH:

2) Write a c/c++ code that obtained the required environment var, then call it from java using JNI.

3) You could use class Runtime to invoke the operating system's ECHO command. It should be something like Runtime.getRuntime().exec("echo %path%") , but there's some extra work required for reading the output, and I don't remember the details.

4) As previous replies indicated, *some* environment variables (not all) may be automatically supplied by java as a system property. For instance, System.getProperty("java.class.path") will provide the classpath (however, note this is not exactly the same as accessing the CLASSPATH environment variable, since classpath may be determined by "java -classpath...."

wood burning stoves
subject: access the evironment variable