Source code for pysmac.utils.java_helper

import os

import pysmac.remote_smac

[docs]def check_java_version(java_executable="java"): """ Small function to ensure that Java (version >= 7) was found. As SMAC requires a Java Runtime Environment (JRE), pysmac checks that a adequate version (>7) has been found. It raises a RuntimeError exception if no JRE or an out-dated version was found. :param java_executable: callable Java binary. It is possible to pass additional options via this argument to the JRE, e.g. "java -Xmx128m" is a valid argument. :type java_executable: str :raises: RuntimeError """ import re from subprocess import STDOUT, check_output error_msg = "" error = False out = check_output(java_executable.split() + ["-version"], stderr=STDOUT).strip().split(b"\n") if len(out) < 1: error_msg = "Failed checking Java version. Make sure Java version 7 or greater is installed." error = True m = re.match(b'.*version "\d+.(\d+)..*', out[0]) if m is None or len(m.groups()) < 1: error_msg = ("Failed checking Java version. Make sure Java version 7 or greater is installed.") error = True else: java_version = int(m.group(1)) if java_version < 7: error_msg = "Found Java version %d, but Java version 7 or greater is required." % java_version error = True if error: raise RuntimeError(error_msg)
[docs]def smac_classpath(): """ Small function gathering all information to build the java class path. :returns: string representing the Java classpath for SMAC """ import multiprocessing from pkg_resources import resource_filename logger = multiprocessing.get_logger() smac_folder = resource_filename("pysmac", 'smac/%s' % pysmac.remote_smac.SMAC_VERSION) smac_conf_folder = os.path.join(smac_folder, "conf") smac_patches_folder = os.path.join(smac_folder, "patches") smac_lib_folder = os.path.join(smac_folder, "lib") classpath = [fname for fname in os.listdir(smac_lib_folder) if fname.endswith(".jar")] classpath = [os.path.join(smac_lib_folder, fname) for fname in classpath] classpath = [os.path.abspath(fname) for fname in classpath] classpath.append(os.path.abspath(smac_conf_folder)) classpath.append(os.path.abspath(smac_patches_folder)) # For Windows compability classpath = (os.pathsep).join(classpath) logger.debug("SMAC classpath: %s", classpath) return classpath