Возможны две проблемы. Во-первых, тот, о котором упоминали другие, - crf_test.exe, может не оказаться на вашем пути. Трудно сказать, выводится ли у вас «нет такого файла или каталога» из crf_test.exe или из Java, пытаясь найти crf_test.exe.
Во-вторых, запустив его из DOS, вы не на самом деле заключаете имя файла в скобки - вы перенаправляете системный ввод с входного файла на выходной файл, поэтому логическая группировка:
crf_test.exe model < inputfile.txt > outputfile.txt
Теперь, когда вы запускаете его из Java, он искренне пытается передать <inputfile.txt>
в качестве второго аргумента командной строки и outputfile.txt в качестве третьего. Я предполагаю, что crf_test.exe затем пытается загрузить их как файлы и выдает «нет такого файла или каталога» как ошибку.
Вам нужно будет загрузить данные из inputfile.txt самостоятельно и передать их через Process.getOutputStream
, а затем прочитать выходные данные из Process.getInputStream
и записать их в outputfile.txt.
Кроме того, вы можете запустить cmd.exe и передать всю команду в качестве аргумента - таким образом оболочка выполнит перенаправление за вас, как если бы вы работали из командной строки DOS.