Java-код для выполнения команд

Я хочу выполнять команды инструмента tabula из программы Java. Код, который я пытаюсь:

System.setProperty("user.dir", "C:\\Program Files");
String command ="\\tabula\\tabula-0.9.0-SNAPSHOT-jar-with-dependencies.jar "+"D:\\sample.pdf"+" -o "+"D:\\sampleeeee.csv";
Process p = Runtime.getRuntime().exec(command);

это не работает, любая помощь будет оценена по достоинству. эту команду необходимо выполнить из Java


person krish    schedule 13.07.2016    source источник
comment
Этот первый оператор не изменит ваш (или дочерний процесс) рабочий каталог.   -  person Elliott Frisch    schedule 13.07.2016


Ответы (2)


Попробуйте это, чтобы установить рабочий каталог, в котором будет выполняться команда.

https://stackoverflow.com/a/8405745/1364747

Process p = null;
ProcessBuilder pb = new ProcessBuilder("java","-jar","tabula-0.9.0-SNAPSHOT-jar-with-dependencies.jar", "D:\\sample.pdf", "-o", "D:\\sampleeeee.csv");
pb.directory("C:\\Program Files\\tabula");
p = pb.start();
person Teddy    schedule 13.07.2016
comment
В приведенном выше коде я получаю сообщение об ошибке: «Не удается запустить программу tabula-0.9.0-SNAPSHOT-jar-with-dependencies.jar». Можете ли вы помочь мне с этим, заранее спасибо - person krish; 14.07.2016
comment
Вы уверены, что показанная на картинке команда работает из командной строки? Ваша полная команда может выглядеть примерно так: java -jar tabula-0.9.0-SNAPSHOT-jar-with-dependencies.jar D:\\sample.pdf -o D:\\sampleeeee.csv - person Teddy; 14.07.2016
comment
да, он работает без java -jar в командной строке. Если я включаю java -jar в код, он также не выполняется - person krish; 14.07.2016
comment
Java и -jar должны быть двумя отдельными строками, например: new ProcessBuilder(java,-jar,tabula-0.9.0-SNAPSHOT-jar-with-dependencies.jar, D:\\sample.pdf, -o, D: \\sampleeeee.csv); - person Teddy; 14.07.2016

Вы можете указать рабочий каталог при вызове exec:

Path workingDir = Paths.get("C:\\Program Files\\tabula");

String[] command = {
    "tabula-0.9.0-SNAPSHOT-jar-with-dependencies.jar",
    "sample.pdf",
    "-o samk.csv"
};

Process p = Runtime.getRuntime().exec(command, null, workingDir.toFile());
person Jorn Vernee    schedule 13.07.2016
comment
при выполнении приведенного выше кода возникает ошибка. Не удается запустить программу tabula-0.9.0-SNAPSHOT-jar-with-dependencies.jar (в каталоге C:\Program Files\tabula): Ошибка CreateProcess = 2, система не может найти файл, указанный в java. lang.ProcessBuilder.start (неизвестный источник) - person krish; 13.07.2016