2013-09-05 7 views
1

Это код, я использую:Runtime.getRuntime() возвращает Exec пустой строке

Runtime runtime = Runtime.getRuntime(); 
    Process process = runtime.exec("cmd /C cd C:/Users/ASUS/Desktop/semantics/semantics/bin"); 
    process = runtime.exec("java test \"abc\" \"def\""); 
    InputStream is = process.getInputStream(); 
    InputStreamReader isr = new InputStreamReader(is); 
    BufferedReader br = new BufferedReader(isr); 
    String line = "", tmp; 

    while ((tmp = br.readLine()) != null) { 
     line += tmp; 
    } 

    System.out.println(line); 

Я пытался использовать такие команды, как «CMD/C реж» и я получил правильное возвращаемое значение.

И это мое тестовое приложение:

import semantics.Compare; 
public class USAGE { 
public static void main(String[] args) {   
String a = args[0]; 
String b = args[1]; 
Compare c = new Compare(a,b); 
System.out.println(c.getResult()); 
} 
} 
+0

Выполняет ли ваше приложение 'test' что-нибудь стандартное? –

+0

Я отредактировал мой вопрос, пожалуйста, перепроверьте его. – blackgh

ответ

0

Чтобы установить рабочую директорию процесса вы начинаете с Runtime.exec, используйте версию, которая принимает файл в качестве одного из параметров.

Рабочий каталог является приватным для процесса, его нельзя изменить, запустив команду «cd» в другом процессе.

+0

Это сработало :) Спасибо. – blackgh

+1

Вы можете передать null, это значит, что подпроцесс наследует среду от текущего процесса. Вероятно, вы, вероятно, найдете класс ProcessBuilder более простым в использовании. – Joni