Моя цель - запускать команды SVN из Java для одного из моих требований, для того же самого я уже установил инструмент командной строки TortoiseSVN.Добавил соответствующий путь "C: / Program Files" / TortoiseSVN / bin "к моей переменной" Path "окружения.
При вышеописанной настройке я могу запускать команды svn из командной строки Windows, используя, скажем," svn --version ", и он прекрасно работает.
Теперь возвращаясь к коду, чтобы выполнить то же самое, я использую Processbuilder для этого. Однако я в конечном итоге с вышеупомянутой ошибкой - java.io.IOException: Невозможно запуститьпрограмма "svn --version": ошибка CreateProcess = 2, система не может найти указанный файл.
Я уже пытался выполнить следующие действия,
Использование ProcessBuilder.environment проверенозначения Path и PATH. Путь недействителен, но в PATH настроены все необходимые пути к приложениям, включая путь "TortoiseSVN / bin". Таким образом, в теории ProcessBuilder не указывается местоположение исполняемого файла на его пути.*
Во время выполнения вместо svn --version я попытался указать полный путь, то есть «C: / Program Files / TortoiseSVN / bin / svn.exe». Это тоже далота же ошибка.
Я пытался использовать тот же код для другого исполняемого файла, например "java -version", который тоже не удался с тем же исключением.сейчас есть чувство, что-то очень простое не правильно.Но я пытался разобраться с этим больше одного дня, но я не получил никаких подсказок.
Хорошо, еще одна вещь, я запускаю это на Windows 7.
Нижеэто код, который я использую,
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class RunningExecutable {
public static void main(String[] args){
String command = "svn --version";
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
ProcessBuilder svnProcessBuilder = new ProcessBuilder(command);
String PATH = svnProcessBuilder.environment().get("PATH");
System.out.println("PATH - " + PATH);
String path = svnProcessBuilder.environment().get("Path");
System.out.println("Path - " + path);
Process procObject = svnProcessBuilder.start();
BufferedReader cmdStreamReader = new BufferedReader(new InputStreamReader(procObject.getInputStream()));
String cmdOutput;
while ((cmdOutput = cmdStreamReader.readLine()) != null) {
outputStream.write((cmdOutput + "\n").getBytes());
}
System.out.println("O/p - " + outputStream.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (Throwable th) {
th.printStackTrace();
}
}
}
С нетерпением жду любых подсказок / указателей вообще.
Спасибо, Вики