#*******************************************************************************
#* Copyright (C) 2014, International Business Machines Corporation and         *
#* others. All Rights Reserved.                                                *
#*******************************************************************************

#
# Eclipse installation location
# Specify the folder that contains eclipse.exe, for example: eclipse.home=C:/eclipse
#
# Note:
#      By default, this value is set by an environment variable 'ECLIPSE_HOME'.
#      You could uncomment below and specify the path in this file alternatively (recommended). 
#
#eclipse.home=

#
# Java 5 runtime jar location
# Specify jar file path(es) including J2SE runtime classes
#
# Note: 
#
#   [Oracle JDK]   All of J2SE runtime classes are in <JRE dir>/lib/rt.jar
#
#   [IBM JDK]      J2SE runtime classes are in multiple jar files. To build ICU4J
#                  plug-in, you need followings:
#                      - <JRE dir>/lib/vm.jar
#                      - <JRE dir>/lib/core.jar
#                      - <JRE dir>/lib/graphics.jar
#                      - <JRE dir>/lib/xml.jar
#
# For example: java.rt=C:/ibmjava5/jre/lib/vm.jar;C:/ibmjava5/jre/lib/core.jar;C:/ibmjava5/jre/lib/graphics.jar;C:/ibmjava5/jre/lib/xml.jar
#
# NOTE:    slashes must be forward slashes. Backslashes will NOT work.
#
#			IF java.rt variable has embedded space(s)...
#          ...each element containing an embedded space java.rt must indivudually quoated and the elements separated by a semi-colon.
#                 ex. "C:/Program Files/IBM/Java50JDK/jre/lib/vm.jar";"C:/Program Files/IBM/Java50JDK/jre/lib/core.jar"
#                                                                   ^^^
java.rt=
