Want to get the system environment variables and/or properties from your Scala or Java application? This quick post shows what environment variables and properties are available.
Print all the environment variables and properties
Here’s a little Scala application that prints all the environment variables and properties. You’ll see that you can convert it to Java very easily:
import scala.collection.JavaConverters._ object EnvironmentVariables extends App { val environmentVars = System.getenv().asScala for ((k,v) <- environmentVars) println(s"key: $k, value: $v") val properties = System.getProperties().asScala for ((k,v) <- properties) println(s"key: $k, value: $v") }
List of Java/Scala environment variables
Here’s a list of all of the environment variables on my current (old) Mac OS X system, given as output from the environmentVars
print loop:
/* Environment Variables */ key: SHELL, value: /bin/bash key: TMPDIR, value: /var/folders/h5/h59HESVvEmG+3I4Q8lOAxE+++TI/-Tmp-/ key: com.apple.java.jvmMode, value: client key: APP_ICON_9820, value: ../Resources/Eclipse.icns key: __CF_USER_TEXT_ENCODING, value: 0x1F5:0:0 key: PATH, value: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin key: COMMAND_MODE, value: unix2003 key: DISPLAY, value: /tmp/launch-p3DxEp/org.x:0 key: USER, value: Al key: com.apple.java.jvmTask, value: JNI.java key: HOME, value: /Users/Al key: LOGNAME, value: Al key: Apple_PubSub_Socket_Render, value: /tmp/launch-HtLZCW/Render key: JAVA_MAIN_CLASS_9830, value: misc.EnvironmentVariables key: SSH_AUTH_SOCK, value: /tmp/launch-PIVsaN/Listeners key: JAVA_STARTED_ON_FIRST_THREAD_9820, value: 1
List of Java/Scala system properties
Here’s a list of all of the environment variables on my current Mac OS X system, given as output from the properties
print loop:
/* Properties */ key: java.runtime.name, value: Java(TM) SE Runtime Environment key: sun.boot.library.path, value: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Libraries key: java.vm.version, value: 20.12-b01-434 key: awt.nativeDoubleBuffering, value: true key: gopherProxySet, value: false key: mrj.build, value: 10M3909 key: java.vm.vendor, value: Apple Inc. key: java.vendor.url, value: http://www.apple.com/ key: path.separator, value: : key: java.vm.name, value: Java HotSpot(TM) 64-Bit Server VM key: file.encoding.pkg, value: sun.io key: sun.java.launcher, value: SUN_STANDARD key: user.country, value: US key: sun.os.patch.level, value: unknown key: java.vm.specification.name, value: Java Virtual Machine Specification key: user.dir, value: /Users/Al/Documents/EclipseScalaWorkspace/ScalaTests4 key: java.runtime.version, value: 1.6.0_37-b06-434-10M3909 key: java.awt.graphicsenv, value: apple.awt.CGraphicsEnvironment key: java.endorsed.dirs, value: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/endorsed key: os.arch, value: x86_64 key: java.io.tmpdir, value: /var/folders/h5/h59HESVvEmG+3I4Q8lOAxE+++TI/-Tmp-/ key: line.separator, value: key: java.vm.specification.vendor, value: Sun Microsystems Inc. key: os.name, value: Mac OS X key: sun.jnu.encoding, value: MacRoman key: java.library.path, value: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java key: java.specification.name, value: Java Platform API Specification key: java.class.version, value: 50.0 key: sun.management.compiler, value: HotSpot 64-Bit Tiered Compilers key: os.version, value: 10.6.8 key: http.nonProxyHosts, value: local|*.local|10.1/16|*.10.1/16 key: user.home, value: /Users/Al key: user.timezone, value: key: java.awt.printerjob, value: apple.awt.CPrinterJob key: file.encoding, value: MacRoman key: java.specification.version, value: 1.6 key: java.class.path, value: /Users/Al/Documents/EclipseScalaWorkspace/ScalaTests4/bin key: user.name, value: Al key: java.vm.specification.version, value: 1.0 key: sun.java.command, value: misc.EnvironmentVariables key: java.home, value: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home key: sun.arch.data.model, value: 64 key: user.language, value: en key: java.specification.vendor, value: Sun Microsystems Inc. key: awt.toolkit, value: apple.awt.CToolkit key: java.vm.info, value: mixed mode key: java.version, value: 1.6.0_37 key: java.ext.dirs, value: /Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext key: sun.boot.class.path, value: [VERY LONG PATH, OMITTED] key: java.vendor, value: Apple Inc. key: file.separator, value: / key: java.vendor.url.bug, value: http://bugreport.apple.com/ key: sun.io.unicode.encoding, value: UnicodeLittle key: sun.cpu.endian, value: little key: mrj.version, value: 1060.1.6.0_37-434 key: socksNonProxyHosts, value: local|*.local|10.1/16|*.10.1/16 key: ftp.nonProxyHosts, value: local|*.local|10.1/16|*.10.1/16 key: sun.cpu.isalist, value:
How to get specific/individual Java environment variables and properties
To get a specific Java or Scala environment variable, write code like this:
/** * Get the value of the USERNAME, like 'Al' or 'Alvin' */ def username = System.getenv("USER")
To access a system property from a Java or Scala application, write code like this:
/** * Get the user's $HOME directory, like '/Users/Al' */ def userHomeDirectory = System.getProperty("user.home")
If you needed information on Scala or Java system properties or environment variables, I hope this has been helpful.