Package org.apache.tools.ant.util

## Class JavaEnvUtils

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

    public final class JavaEnvUtils
    extends java.lang.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
`static java.lang.String` `JAVA_1_0` Version constant for Java 1.0
`static java.lang.String` `JAVA_1_1` Version constant for Java 1.1
`static java.lang.String` `JAVA_1_2` Version constant for Java 1.2
`static java.lang.String` `JAVA_1_3` Version constant for Java 1.3
`static java.lang.String` `JAVA_1_4` Version constant for Java 1.4
`static java.lang.String` `JAVA_1_5` Version constant for Java 1.5
`static java.lang.String` `JAVA_1_6` Version constant for Java 1.6
`static java.lang.String` `JAVA_1_7` Version constant for Java 1.7
`static java.lang.String` `JAVA_1_8` Version constant for Java 1.8
`static java.lang.String` `JAVA_1_9` Deprecated. use #JAVA_9 instead
`static java.lang.String` `JAVA_10` Version constant for Java 10
`static java.lang.String` `JAVA_11` Version constant for Java 11
`static java.lang.String` `JAVA_12` Version constant for Java 12
`static java.lang.String` `JAVA_9` Version constant for Java 9
`static int` `VERSION_1_0` Number Version constant for Java 1.0
`static int` `VERSION_1_1` Number Version constant for Java 1.1
`static int` `VERSION_1_2` Number Version constant for Java 1.2
`static int` `VERSION_1_3` Number Version constant for Java 1.3
`static int` `VERSION_1_4` Number Version constant for Java 1.4
`static int` `VERSION_1_5` Number Version constant for Java 1.5
`static int` `VERSION_1_6` Number Version constant for Java 1.6
`static int` `VERSION_1_7` Number Version constant for Java 1.7
`static int` `VERSION_1_8` Number Version constant for Java 1.8
`static int` `VERSION_1_9` Deprecated. use #VERSION_9 instead
`static int` `VERSION_10` Number Version constant for Java 10
`static int` `VERSION_11` Number Version constant for Java 11
`static int` `VERSION_12` Number Version constant for Java 12
`static int` `VERSION_9` Number Version constant for Java 9

### Method Summary

All Methods Static Methods Concrete Methods Deprecated Methods
`static java.io.File` `createVmsJavaOptionFile​(java.lang.String[] cmds)` Writes the command into a temporary DCL script and returns the corresponding File object.
`static java.lang.String` `getJavaHome()` Return the value of ${java.home}
`static java.lang.String` `getJavaVersion()` Returns the version of Java this class is running under.
`static int` `getJavaVersionNumber()` Deprecated. use #getParsedJavaVersion instead
`static java.lang.String` `getJdkExecutable​(java.lang.String command)` Finds an executable that is part of a JDK installation based on the java.home system property.
`static java.lang.String` `getJreExecutable​(java.lang.String command)` Finds an executable that is part of a JRE installation based on the java.home system property.
`static java.util.Vector<java.lang.String>` `getJrePackages()` get a vector of strings of packages built into that platforms runtime jar(s)
`static java.util.Vector<java.lang.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​(java.lang.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​(java.lang.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 Detail

#### JAVA_1_0

    public static final java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 Detail

#### getJavaVersion

    public static java.lang.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​(java.lang.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​(java.lang.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 java.lang.String getJreExecutable​(java.lang.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 java.lang.String getJdkExecutable​(java.lang.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 java.util.Vector<java.lang.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 java.util.Vector<java.lang.String> getJrePackages()

get a vector of strings of packages built into that platforms runtime jar(s)

Returns:
  list of packages.

#### createVmsJavaOptionFile

    public static java.io.File createVmsJavaOptionFile​(java.lang.String[] cmds)
                                                throws java.io.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:
  `java.io.IOException` - if there is an error writing to the file.

#### getJavaHome

    public static java.lang.String getJavaHome()

Return the value of ${java.home}

Returns:
  the java home value.