2015-05-16 2 views
3

Я сделал новый процесс, но он никогда не заканчивается. Я пытался с ProcessBuilder и Runtime, но ни один из них не работал, оба застряли.Почему этот Java-код застрял?

код Builder:

ProcessBuilder a = new ProcessBuilder(
    "java", 
    "-classpath", 
    "D:\\TAP", 
    "AnalizadorLexico", 
    "<", 
    "D:\\TAP\\Lol1.txt"); 
Process process=a.start(); 

код Runtime:

Process process=cmd.exec(
    "java -classpath D:\\TAP AnalizadorLexico < D:\\TAP\\Lol1.txt "); 

Команда работает в Windows, CMD.

+0

Какие результаты вы получаете для обоих? Есть ли исключение? Процесс «никогда не заканчивается», но делает ли он, по крайней мере, результат ожидаемого результата. I.e выполняет ли он указанный класс Java? – Val

+1

«<» работает с cmd (или другими оболочками). Программа Java не интерпретирует ее как входную. Вы можете использовать «cmd/c java progr Jayan

+0

@Jayan. OP сказал, что процесс застрял, что не должно быть, если посмотреть на код. – geekprogrammer

ответ

0

Из комментариев:

"<" работает с ЦМД (или других оболочек). Программа Java не интерпретирует ее как входную. Вы можете использовать «cmd /c java progr < input», но это делает его специфичным для Windows.

Лучший способ будет использовать реальные API-интерфейсы Java для этого: См ProcessBuilder

Как только вы получите мимо этого, пожалуйста, проверьте еще FAQ предмет на этом

Смежные вопросы