boolean (@NotNull String executable, @NotNull List<String> processParameters, @NotNull Map<String, String> envVariables) { try { GeneralCommandLine commandLine = new GeneralCommandLine(); commandLine.setExePath(executable); commandLine.addParameters(processParameters); commandLine.setCharset(CharsetToolkit.getDefaultSystemCharset()); commandLine.withEnvironment(envVariables); CapturingProcessHandler handler = new CapturingProcessHandler(commandLine); ProcessOutput result = handler.runProcess(TIMEOUT_MS); boolean timeout = result.isTimeout(); int exitCode = result.getExitCode(); String stderr = result.getStderr(); if (timeout) { LOG.warn("Validation of " + executable + " failed with a timeout"); } if (exitCode != 0) { LOG.warn("Validation of " + executable + " failed with a non-zero exit code: " + exitCode); } if (!stderr.isEmpty()) { LOG.warn("Validation of " + executable + " failed with a non-empty error output: " + stderr); } return !timeout && exitCode == 0 && stderr.isEmpty(); } catch (Throwable t) { LOG.warn(t); return false; } }