Package org.apache.tools.ant.util

# Class JavaEnvUtils

java.lang.Object
org.apache.tools.ant.util.JavaEnvUtils

public final class JavaEnvUtils extends Object
A set of helper methods related to locating executables or checking conditions of a given Java installation.

Starting with Java 10 we've stopped adding `JAVA_` and `VERSION_` attributes for new major version numbers of the JVM.

Since:
  Ant 1.5

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `JAVA_1_0`
  Version constant for Java 1.0
  `static final String`
  `JAVA_1_1`
  Version constant for Java 1.1
  `static final String`
  `JAVA_1_2`
  Version constant for Java 1.2
  `static final String`
  `JAVA_1_3`
  Version constant for Java 1.3
  `static final String`
  `JAVA_1_4`
  Version constant for Java 1.4
  `static final String`
  `JAVA_1_5`
  Version constant for Java 1.5
  `static final String`
  `JAVA_1_6`
  Version constant for Java 1.6
  `static final String`
  `JAVA_1_7`
  Version constant for Java 1.7
  `static final String`
  `JAVA_1_8`
  Version constant for Java 1.8
  `static final String`
  `JAVA_1_9`
  Deprecated.
  use #JAVA_9 instead
  `static final String`
  `JAVA_10`
  Version constant for Java 10
  `static final String`
  `JAVA_11`
  Version constant for Java 11
  `static final String`
  `JAVA_12`
  Version constant for Java 12
  `static final String`
  `JAVA_9`
  Version constant for Java 9
  `static final int`
  `VERSION_1_0`
  Number Version constant for Java 1.0
  `static final int`
  `VERSION_1_1`
  Number Version constant for Java 1.1
  `static final int`
  `VERSION_1_2`
  Number Version constant for Java 1.2
  `static final int`
  `VERSION_1_3`
  Number Version constant for Java 1.3
  `static final int`
  `VERSION_1_4`
  Number Version constant for Java 1.4
  `static final int`
  `VERSION_1_5`
  Number Version constant for Java 1.5
  `static final int`
  `VERSION_1_6`
  Number Version constant for Java 1.6
  `static final int`
  `VERSION_1_7`
  Number Version constant for Java 1.7
  `static final int`
  `VERSION_1_8`
  Number Version constant for Java 1.8
  `static final int`
  `VERSION_1_9`
  Deprecated.
  use #VERSION_9 instead
  `static final int`
  `VERSION_10`
  Number Version constant for Java 10
  `static final int`
  `VERSION_11`
  Number Version constant for Java 11
  `static final int`
  `VERSION_12`
  Number Version constant for Java 12
  `static final int`
  `VERSION_9`
  Number Version constant for Java 9

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static File`
  `createVmsJavaOptionFile(String[] cmds)`
  Writes the command into a temporary DCL script and returns the corresponding File object.
  `static String`
  `getJavaHome()`
  Return the value of ${java.home}
  `static String`
  `getJavaVersion()`
  Returns the version of Java this class is running under.
  `static int`
  `getJavaVersionNumber()`
  Deprecated.
  use #getParsedJavaVersion instead
  `static String`
  `getJdkExecutable(String command)`
  Finds an executable that is part of a JDK installation based on the java.home system property.
  `static String`
  `getJreExecutable(String command)`
  Finds an executable that is part of a JRE installation based on the java.home system property.
  `static Vector<String>`
  `getJrePackages()`
  get a vector of strings of packages built into that platforms runtime jar(s)
  `static Vector<String>`
  `getJrePackageTestCases()`
  Testing helper method; kept here for unification of changes.
  `static DeweyDecimal`
  `getParsedJavaVersion()`
  Returns the version of Java this class is running under.
  `static boolean`
  `isApacheHarmony()`
  Checks whether the current VM is Apache Harmony.
  `static boolean`
  `isAtLeastJavaVersion(String version)`
  Compares the current Java version to the passed in String - assumes the argument is one of the constants defined in this class.
  `static boolean`
  `isClasspathBased()`
  Checks whether the current Java VM is GNU Classpath
  `static boolean`
  `isGij()`
  Checks whether the current Java VM is the GNU interpreter gij or we are running in a gcj precompiled binary.
  `static boolean`
  `isJavaVersion(String version)`
  Compares the current Java version to the passed in String - assumes the argument is one of the constants defined in this class.
  `static boolean`
  `isKaffe()`
  Checks whether the current Java VM is Kaffe.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### JAVA_1_0

    public static final String JAVA_1_0
    Version constant for Java 1.0
    See Also:
      - Constant Field Values

  - ### VERSION_1_0

    public static final int VERSION_1_0
    Number Version constant for Java 1.0
    See Also:
      - Constant Field Values

  - ### JAVA_1_1

    public static final String JAVA_1_1
    Version constant for Java 1.1
    See Also:
      - Constant Field Values

  - ### VERSION_1_1

    public static final int VERSION_1_1
    Number Version constant for Java 1.1
    See Also:
      - Constant Field Values

  - ### JAVA_1_2

    public static final String JAVA_1_2
    Version constant for Java 1.2
    See Also:
      - Constant Field Values

  - ### VERSION_1_2

    public static final int VERSION_1_2
    Number Version constant for Java 1.2
    See Also:
      - Constant Field Values

  - ### JAVA_1_3

    public static final String JAVA_1_3
    Version constant for Java 1.3
    See Also:
      - Constant Field Values

  - ### VERSION_1_3

    public static final int VERSION_1_3
    Number Version constant for Java 1.3
    See Also:
      - Constant Field Values

  - ### JAVA_1_4

    public static final String JAVA_1_4
    Version constant for Java 1.4
    See Also:
      - Constant Field Values

  - ### VERSION_1_4

    public static final int VERSION_1_4
    Number Version constant for Java 1.4
    See Also:
      - Constant Field Values

  - ### JAVA_1_5

    public static final String JAVA_1_5
    Version constant for Java 1.5
    See Also:
      - Constant Field Values

  - ### VERSION_1_5

    public static final int VERSION_1_5
    Number Version constant for Java 1.5
    See Also:
      - Constant Field Values

  - ### JAVA_1_6

    public static final String JAVA_1_6
    Version constant for Java 1.6
    See Also:
      - Constant Field Values

  - ### VERSION_1_6

    public static final int VERSION_1_6
    Number Version constant for Java 1.6
    See Also:
      - Constant Field Values

  - ### JAVA_1_7

    public static final String JAVA_1_7
    Version constant for Java 1.7
    See Also:
      - Constant Field Values

  - ### VERSION_1_7

    public static final int VERSION_1_7
    Number Version constant for Java 1.7
    See Also:
      - Constant Field Values

  - ### JAVA_1_8

    public static final String JAVA_1_8
    Version constant for Java 1.8
    See Also:
      - Constant Field Values

  - ### VERSION_1_8

    public static final int VERSION_1_8
    Number Version constant for Java 1.8
    See Also:
      - Constant Field Values

  - ### JAVA_1_9

    @Deprecated public static final String JAVA_1_9
    Deprecated.
    use #JAVA_9 instead
    Version constant for Java 1.9
    See Also:
      - Constant Field Values

  - ### VERSION_1_9

    @Deprecated public static final int VERSION_1_9
    Deprecated.
    use #VERSION_9 instead
    Number Version constant for Java 1.9
    See Also:
      - Constant Field Values

  - ### JAVA_9

    public static final String JAVA_9
    Version constant for Java 9
    Since:
      Ant 1.9.8
    See Also:
      - Constant Field Values

  - ### VERSION_9

    public static final int VERSION_9
    Number Version constant for Java 9
    Since:
      Ant 1.9.8
    See Also:
      - Constant Field Values

  - ### JAVA_10

    public static final String JAVA_10
    Version constant for Java 10
    Since:
      Ant 1.10.7
    See Also:
      - Constant Field Values

  - ### VERSION_10

    public static final int VERSION_10
    Number Version constant for Java 10
    Since:
      Ant 1.10.7
    See Also:
      - Constant Field Values

  - ### JAVA_11

    public static final String JAVA_11
    Version constant for Java 11
    Since:
      Ant 1.10.7
    See Also:
      - Constant Field Values

  - ### VERSION_11

    public static final int VERSION_11
    Number Version constant for Java 11
    Since:
      Ant 1.10.7
    See Also:
      - Constant Field Values

  - ### JAVA_12

    public static final String JAVA_12
    Version constant for Java 12
    Since:
      Ant 1.10.7
    See Also:
      - Constant Field Values

  - ### VERSION_12

    public static final int VERSION_12
    Number Version constant for Java 12
    Since:
      Ant 1.10.7
    See Also:
      - Constant Field Values

- ## Method Details

  - ### getJavaVersion

    public static String getJavaVersion()
    Returns the version of Java this class is running under.

    Up until Java 8 Java version numbers were 1.VERSION - e.g. 1.8.x for Java 8, starting with Java 9 it became 9.x.

    Returns:
      the version of Java as a String, e.g. "1.6" or "9"

  - ### getJavaVersionNumber

    @Deprecated public static int getJavaVersionNumber()
    Deprecated.
    use #getParsedJavaVersion instead
    Returns the version of Java this class is running under.

    This number can be used for comparisons.

    Returns:
      the version of Java as a number 10x the major/minor, e.g Java1.5 has a value of 15 and Java9 the value 90 - major will be 1 for all versions of Java prior to Java 9, minor will be 0 for all versions of Java starting with Java 9.

  - ### getParsedJavaVersion

    public static DeweyDecimal getParsedJavaVersion()
    Returns the version of Java this class is running under.

    This number can be used for comparisons.

    Returns:
      the version of Java as major.minor, e.g Java1.5 has a value of 1.5 and Java9 the value 9 - major will be 1 for all versions of Java prior to Java 9, minor will be 0 for all versions of Java starting with Java 9.

  - ### isJavaVersion

    public static boolean isJavaVersion(String version)
    Compares the current Java version to the passed in String - assumes the argument is one of the constants defined in this class. Note that Ant now requires JDK 1.8+ so `JAVA_1_0` through `JAVA_1_7` need no longer be tested for.
    Parameters:
      `version` - the version to check against the current version.
    Returns:
      true if the version of Java is the same as the given version.
    Since:
      Ant 1.5

  - ### isAtLeastJavaVersion

    public static boolean isAtLeastJavaVersion(String version)
    Compares the current Java version to the passed in String - assumes the argument is one of the constants defined in this class. Note that Ant now requires JDK 1.8+ so `JAVA_1_0` through `JAVA_1_7` need no longer be tested for.
    Parameters:
      `version` - the version to check against the current version.
    Returns:
      true if the version of Java is the same or higher than the given version.
    Since:
      Ant 1.7

  - ### isKaffe

    public static boolean isKaffe()
    Checks whether the current Java VM is Kaffe.
    Returns:
      true if the current Java VM is Kaffe.
    Since:
      Ant 1.6.3
    See Also:
      - https://github.com/kaffe/kaffe

  - ### isClasspathBased

    public static boolean isClasspathBased()
    Checks whether the current Java VM is GNU Classpath
    Returns:
      true if the version of Java is GNU Classpath
    Since:
      Ant 1.9.1

  - ### isGij

    public static boolean isGij()
    Checks whether the current Java VM is the GNU interpreter gij or we are running in a gcj precompiled binary.
    Returns:
      true if the current Java VM is gcj/gij.
    Since:
      Ant 1.8.2

  - ### isApacheHarmony

    public static boolean isApacheHarmony()
    Checks whether the current VM is Apache Harmony.
    Returns:
      true if the current VM is Apache Harmony.
    Since:
      Ant 1.8.2

  - ### getJreExecutable

    public static String getJreExecutable(String command)
    Finds an executable that is part of a JRE installation based on the java.home system property.

    `java`, `keytool`, `policytool`, `orbd`, `rmid`, `rmiregistry`, `servertool` and `tnameserv` are JRE executables on Sun based JRE's.

    You typically find them in `JAVA_HOME/jre/bin` if `JAVA_HOME` points to your JDK installation. JDK < 1.2 has them in the same directory as the JDK executables.

    Parameters:
      `command` - the java executable to find.
    Returns:
      the path to the command.
    Since:
      Ant 1.5

  - ### getJdkExecutable

    public static String getJdkExecutable(String command)
    Finds an executable that is part of a JDK installation based on the java.home system property.

    You typically find them in `JAVA_HOME/bin` if `JAVA_HOME` points to your JDK installation.

    Parameters:
      `command` - the java executable to find.
    Returns:
      the path to the command.
    Since:
      Ant 1.5

  - ### getJrePackageTestCases

    public static Vector<String> getJrePackageTestCases()
    Testing helper method; kept here for unification of changes.
    Returns:
      a list of test classes depending on the java version.

  - ### getJrePackages

    public static Vector<String> getJrePackages()
    get a vector of strings of packages built into that platforms runtime jar(s)
    Returns:
      list of packages.

  - ### createVmsJavaOptionFile

    public static File createVmsJavaOptionFile(String[] cmds) throws IOException
    Writes the command into a temporary DCL script and returns the corresponding File object. It is the job of the caller to delete the file on exit.
    Parameters:
      `cmds` - the command.
    Returns:
      the file containing the command.
    Throws:
      `IOException` - if there is an error writing to the file.

  - ### getJavaHome

    public static String getJavaHome()
    Return the value of ${java.home}
    Returns:
      the java home value.