String command = "javac -cp .:../sqljdbc.jar SetHash.java";
Process child = Runtime.getRuntime().exec(command);
try{
c= child.waitFor();
} catch (Exception ex){ex.printStackTrace();}
...您好 我想知道如果命令成功运行,将在上述结构中将哪个值赋给“c”变量。此外,我想知道如果命令最终出现错误,将分配给“c”的值是否会有任何更改。
答案 0 :(得分:3)
从http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6296560开始,如果编译成功(有或没有警告),它将返回0,如果没有,则返回1.
答案 1 :(得分:2)
从浅层意义上讲,分配给c
的值是被调用进程的返回值。 Process
类本身无法控制它的语义,因为被调用的进程可以返回它想要的任何内容。进程的约定是在成功终止时返回0
,并使用非零值来指示错误。
作为jmo points out,如果编译成功,则来自javac
的返回值为0,如果不成功则为1(个人,我仍然会测试零和非零,以便将来验证)。因此,您可以测试:
final boolean compilationSucceeded = c ==0;
(另外,c
是一个误导性的变量。部分是因为它并不是很明显它意味着什么,在i
作为循环计数器正常工作的意义上;还因为按惯例名为c
的变量是字符,但这里是int
)。