Hello, I found a much easier to detect the path to JAVA_HOME on Unix-like platforms where the java command is in the search path. "java -verbose" prints out the paths of all loaded JAR files.
Christian --- import subprocess import re import os PATH_RE = re.compile("Loaded\ .*\ from\ (.*)/jre/lib/rt.jar") def find_java(): """Find java home by running java -verbose In verbose mode, java prints lines like [Loaded java.lang.Object from /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rt.jar] to stdout. """ try: proc = subprocess.Popen(["java", "-verbose"], stdout=subprocess.PIPE) except OSError: return None out, err = proc.communicate() for line in out.split("\n"): mo = PATH_RE.search(line) if mo is None: continue javahome = mo.group(1) if os.path.isdir(javahome): return javahome if __name__ == "__main__": print find_java() ---