我在unix sudo命令下运行,它在那里工作得很好。
苏多-U XFBCFT-I
问题是,当我尝试同样的Java进程生成器的东西时,我在UNIX上得到了许可被拒绝的异常。
public class Test {
public static void main(String args[]){
System.out.println("Going to execute:");
runUnixComand();
}
private static void runUnixComand() {
Process p;
StringBuffer output = new StringBuffer();
try {
String [] cmdArray ={"sudo -u xfbcft -i ","cftping -v","exit"};
ProcessBuilder builder = new ProcessBuilder(cmdArray);
builder.redirectErrorStream(true);
//builder.redirectOutput();
Process process = builder.start();
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println("op:"+line);
}
} catch (Exception e) {
System.out.println(e);
e.printStackTrace();
}
}}
下面是我在Unix终端上得到的异常行。
java.io.IOException: Cannot run program "sudo -u xfbcft -i ": error=13, Permission denied
java.io.IOException: Cannot run program "sudo -u xfbcft -i ": error=13, Permission denied
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at JdbcTest.runUnixComand(JdbcTest.java:23)
at JdbcTest.main(JdbcTest.java:8)
Caused by: java.io.IOException: error=13, Permission denied
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
注意:我在sudoers文件中有一些条目,在Unix上个别命令运行良好。此外,用户运行此Java程序和个别命令是相同的。请指导。