执行命令行应用程序

时间:2012-11-19 13:00:36

标签: java

我正在尝试从代码:

对类文件执行JAD反编译器
Process p = Runtime.getRuntime().exec("c:\\1\\jad.exe c:\\1\\EIn.class");
//All paths are correct, "c:\\1\\jad.exe c:\\1\\EIn.class" wotks when I run it in cmd

当我调试时,我没有收到任何错误,调试器移动到下一行......

如果我把:

int res = p.waitFor(); 

它只是挂起。

更新

BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String str = null;
while ((str = in.readLine()) != null) { //Stucks here
}

3 个答案:

答案 0 :(得分:1)

jad反编译器是否等待你通过stdin输入?

要查看您获得的错误,请使用getOutputStreamgetErrorStream来查看反编译器正在写出的内容。

您可以使用ProcessBuilder类使重定向流更加愉快。

答案 1 :(得分:0)

public static void main(String[] args) throws Exception {

    String[] cmd = { "c:\\1\\jad.exe", "-c:\\1\\EIn.class" };
    Process p = Runtime.getRuntime().exec(cmd);
    p.waitFor();
}

答案 2 :(得分:0)

这是Java中的TRAP,请看一下this page,你会得到比你更多的东西!