Попробуйте перейти к окну powershell или командной строке cmd и введите:
python -m pip install openpyxl
I'm no scala programmer, but what I would do in any language, is to execute something like 'svn help
' just to check the return code (0 or 1) of the exec method... if it fails the svn is not in the path :P
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("svn help");
int exitVal = proc.exitValue();
By convention, the value 0 indicates normal termination.
Это подобно Dmitry Ginzburg
ответ, но он также обращается к редкому случаю кого-то имеющего недопустимый путь в PATH
переменная среды. Это вызвало бы InvalidPathException
.
private static final String ENVIRONMENT_VARIABLES_TEXT = System.getenv("PATH");
private static boolean isCommandAvailable(String executableFileName)
{
String[] environmentVariables = ENVIRONMENT_VARIABLES_TEXT.split(File.pathSeparator);
for (String environmentVariable : environmentVariables)
{
try
{
Path environmentVariablePath = Paths.get(environmentVariable);
if (Files.exists(environmentVariablePath))
{
Path resolvedEnvironmentVariableFilePath = environmentVariablePath.resolve(executableFileName);
if (Files.isExecutable(resolvedEnvironmentVariableFilePath))
{
return true;
}
}
} catch (InvalidPathException exception)
{
exception.printStackTrace();
}
}
return false;
}
Полный это могло бы теперь быть самым эффективным и надежным решением.
Если вы если установлен cygwin, вы можете сначала вызвать «which svn», который вернет абсолютный путь к svn, если он находится в исполняемом пути, или «which: no svn in (...)». Вызов «which» вернет значение exitValue, равное 1, если не найдено, или 0, если оно найдено. Вы можете проверить этот код ошибки в описании FMF.
Что касается исходного вопроса, я бы также проверил его существование, как предлагал FMF.
Я также хотел бы указать, что вам придется обрабатывать, по крайней мере, вывод процесса , читая доступные данные, чтобы потоки не были заполнены до краев. В противном случае это приведет к блокировке процесса.
Для этого извлеките InputStreams процесса с помощью proc.getInputStream () (для System.out) и proc.getErrorStream () (для System.err) и прочтите доступный данные в разных потоках.
Я просто говорю вам, потому что это распространенная ошибка, и svn потенциально может создать довольно много вывода, поэтому, пожалуйста, не голосуйте против оффтопа;)