0
我想实现的是从java应用程序安装一个软件,该软件是我创建的
。我有gksudo的许可。然后,我输入我的通行证,程序开始工作,直到出现yes/no选项。我怎么能通过这个问题?使用sudo命令从Java项目安装软件
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class TestApp {
public static void main(String[] args) {
Process ls = null;
BufferedReader input = null;
String line = null;
try {
ls = Runtime.getRuntime().exec(
new String[] { "gksudo", "apt-get", "install", "PACKAGE" });
try {
ls.wait(6000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ls = Runtime.getRuntime().exec(new String[] { "y" });
input = new BufferedReader(new InputStreamReader(
ls.getInputStream()));
} catch (IOException e1) {
e1.printStackTrace();
System.exit(1);
}
try {
while ((line = input.readLine()) != null) {
System.out.println(line);
}
ls.destroy();
} catch (IOException e1) {
e1.printStackTrace();
System.exit(0);
}
}
}
太谢谢你了。 – user3142980
我意识到我无法正确使用apt-get和gksudo。由于apt-get是CLI工具,因此它不能用于GUI环境(gksudo)。所以,我必须使用sudo和apt-get。但在java程序中,我无法执行sudo命令。 – user3142980
Runtime.exec()通常会生成一个没有关联tty的进程,所以sudo不可能打印出密码查询。应该可以运行“sudo -A ....”来激活程序sudo可能会开始收集密码。 – blafasel