Class JavaVirtualMachineDetector


  • public class JavaVirtualMachineDetector
    extends Object
    Based on comment from Vincent Massol on the forums: http://www.pols.co.uk/forums/viewtopic.php?id=26
    • Constructor Detail

      • JavaVirtualMachineDetector

        public JavaVirtualMachineDetector​(boolean isRunningOnOsx)
    • Method Detail

      • detectJavaHome

        public String detectJavaHome​(String systemJavaHome)
        Used to detects if the default JAVA_HOME is running on a JRE and not a JDK (so that the tools.jar is missing and build's cannot compile).

        The strategy is:

        • If running on OSX, return the JAVA_HOME as no need for tools.jar on the mac
        • First loot to see if we can find the tools.jar in ${java.home}/lib/tools.jar. If found then you've got your dir.
        • Otherwise look for tools.jar in ${java.home}/../lib/tools.jar. if found then you've got your dir.
        If not, return false, user has installed a JRA and not a JDK
        Parameters:
        systemJavaHome - What the system thinks the JAVA_HOME is - may be a JRE or a JVM!
        Returns:
        The JAVA_HOME adjusted to ensure we're running on JDK and not the JDK's JRE!
        Throws:
        IllegalStateException - if we are running only on a JRE as we not be able to build any builds by default!
      • containsJavac

        public boolean containsJavac​(File givenDirectory)
      • detectExternalJdkVersion

        @Nullable
        public @Nullable String detectExternalJdkVersion​(File givenDirectory)