/** * @see #getJavaBinExecutablePath(boolean) */ public static String getJavaBinExecutablePath() { return getJavaBinExecutablePath(false); }
/** * There is java environment configuration gap - ${JAVA_HOME}/bin/java != `which java` so just * start child process as "java" executable command drives to unexpected results. On generic Lunix * environment 'which java' may show not Oracle hotspot 8th jdk binary and evoSuite * master<->client communication will have no results. * * @param isFullOriginalJavaExecRequired - original behavior switch: "java" or JAVA_CMD from * (@link org.evosuite.EvoSuite#JAVA_CMD) * @return current runtime java executable path based on $JAVA_HOME environment variable * @apiNote under maven java.home property is ${JAVA_HOME}/jre/bin/java */ public static String getJavaBinExecutablePath(final boolean isFullOriginalJavaExecRequired) { final String separator = System.getProperty("file.separator"); final String JAVA_CMD = System.getProperty("java.home") + separator + "bin" + separator + "java"; return getJavaHomeEnv() .map(javaHomeEnvVar -> new File( javaHomeEnvVar + File.separatorChar + "bin" + File.separatorChar + "java" + getOsName() .filter(osName -> osName.toLowerCase().contains("windows")) .map(osName -> ".exe") .orElse("") ) ) .filter(File::exists) .map(File::getPath) .orElse(isFullOriginalJavaExecRequired ? JAVA_CMD : "java"); }
@Test public void unixNewBehavior() { // run test only on unix build JavaExecCmdUtil.getOsName().filter(osName -> !osName.startsWith("Windows")) .ifPresent(os -> { System.setProperty("os.name", MOCK_OS); System.setProperty("file.separator", SEPARATOR); System.setProperty("java.home", JAVA_HOME_MOCK_PATH); // set correct java_home and get real path to java environmentVariables.set("JAVA_HOME", JAVA_HOME_SYSTEM); assertThat(JavaExecCmdUtil.getJavaBinExecutablePath(), IsEqual.equalTo(JAVA_HOME_SYSTEM + SEPARATOR + "bin" + SEPARATOR + "java")); } ); } }
@Test public void winNewBehavior() { // run test only on windows build Assume.assumeThat(ORIG_OS.toLowerCase(), StringStartsWith.startsWith("win")); JavaExecCmdUtil.getOsName().filter(osName -> osName.startsWith("Windows")).ifPresent(os -> { // set correct java_home and get real path to java.exe environmentVariables.set("JAVA_HOME", JAVA_HOME_SYSTEM); assertThat(JavaExecCmdUtil.getJavaBinExecutablePath(), IsEqual.equalTo( JAVA_HOME_SYSTEM + SEPARATOR + "bin" + SEPARATOR + "java.exe")); } ); } }
cmd.add(JavaExecCmdUtil.getJavaBinExecutablePath()/*"java"*/); cmd.add("-jar"); cmd.add(""+evo);
cmd.add(JavaExecCmdUtil.getJavaBinExecutablePath()/*"java"*/); cmd.add("-D" + LoggingUtils.USE_DIFFERENT_LOGGING_XML_PARAMETER + "=logback-ctg-entry.xml"); cmd.add("-Dlogback.configurationFile=logback-ctg-entry.xml");
@Test public void unixNeverNull() { assertNotNull(JavaExecCmdUtil.getJavaBinExecutablePath()); assertNotNull(JavaExecCmdUtil.getJavaBinExecutablePath(true)); assertNotNull(JavaExecCmdUtil.getJavaBinExecutablePath(false)); }
@Test public void winNeverNull() { assertNotNull(JavaExecCmdUtil.getJavaBinExecutablePath()); assertNotNull(JavaExecCmdUtil.getJavaBinExecutablePath(true)); assertNotNull(JavaExecCmdUtil.getJavaBinExecutablePath(false)); }
private List<String> getCommandString(JobDefinition job) { commands.add(JavaExecCmdUtil.getJavaBinExecutablePath()/*"java"*/);
@Test public void unixOldBehaviorJavaCmd() { System.setProperty("os.name", MOCK_OS); System.setProperty("file.separator", SEPARATOR); System.setProperty("java.home", JAVA_HOME_MOCK_PATH); // return JAVA_CMD value assertThat(JavaExecCmdUtil.getJavaBinExecutablePath(true), IsEqual.equalTo( JAVA_HOME_MOCK_PATH + SEPARATOR + "bin" + SEPARATOR + "java")); }
@Test public void unixOldBehaviorJava() { // return "java" value assertThat(JavaExecCmdUtil.getJavaBinExecutablePath(), IsEqual.equalTo("java")); }
@Test public void winOldBehaviorJava() { // return "java" value assertThat(JavaExecCmdUtil.getJavaBinExecutablePath(), IsEqual.equalTo("java")); }
@Test public void winOldBehaviorJavaCmd() { // return JAVA_CMD value assertThat(JavaExecCmdUtil.getJavaBinExecutablePath(true), IsEqual.equalTo( JAVA_HOME_MOCK_PATH + SEPARATOR + "bin" + SEPARATOR + "java")); }
int port = handler.openServer(); List<String> cmdLine = new ArrayList<String>(); cmdLine.add(JavaExecCmdUtil.getJavaBinExecutablePath(true)/*EvoSuite.JAVA_CMD*/); cmdLine.add("-cp"); cmdLine.add(classPath);
int port = handler.openServer(); List<String> cmdLine = new ArrayList<String>(); cmdLine.add(JavaExecCmdUtil.getJavaBinExecutablePath(true)/*EvoSuite.JAVA_CMD*/); cmdLine.add("-cp"); cmdLine.add(classPath);
int port = handler.openServer(); List<String> cmdLine = new ArrayList<String>(); cmdLine.add(JavaExecCmdUtil.getJavaBinExecutablePath(true)/*EvoSuite.JAVA_CMD*/); cmdLine.add("-cp"); cmdLine.add(classPath);
cmdLine.add(JavaExecCmdUtil.getJavaBinExecutablePath(true)/*EvoSuite.JAVA_CMD*/); List<String[]> processArgs = new ArrayList<>();