Class 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 
      Modifier and Type Field Description
      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 
      Modifier and Type Method Description
      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.