Java 使用apache commons exec向外部进程发送多个值时出现问题
我正在尝试编写一个小应用程序,它可以自动使用一个外部应用程序,即任何连接移动客户端。它提供了一个命令行工具,可用于连接到VPN 我希望使用ApacheCommonsExec库从java应用程序运行这个命令行工具,并能够读取他的输出以发送所需的信息 我已经在网上搜索了“如何与外部应用程序通信”,但我找到的唯一帖子是这篇文章:上面写着“嘿,我找到了解决方案”,但我不明白他是怎么做到的 当我启动流程时,我运行一个函数来读取输入,如下所示:Java 使用apache commons exec向外部进程发送多个值时出现问题,java,command-line,process,stream,apache-commons-exec,Java,Command Line,Process,Stream,Apache Commons Exec,我正在尝试编写一个小应用程序,它可以自动使用一个外部应用程序,即任何连接移动客户端。它提供了一个命令行工具,可用于连接到VPN 我希望使用ApacheCommonsExec库从java应用程序运行这个命令行工具,并能够读取他的输出以发送所需的信息 我已经在网上搜索了“如何与外部应用程序通信”,但我找到的唯一帖子是这篇文章:上面写着“嘿,我找到了解决方案”,但我不明白他是怎么做到的 当我启动流程时,我运行一个函数来读取输入,如下所示: Thread T = new Thread() {
Thread T = new Thread() {
public void run() {
String line;
try {
line = processOutput.readLine();
while (line != null) {
System.out.println(line);
if(line.contains("VPN-Password")){
sendMessage(processInput, "1");
}
if(line.contains("Please enter your username and password")){
sendMessage(processInput, "username");
}
line = processOutput.readLine();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
T.start();
函数send message只是运行一个线程写入进程inputstream,然后刷新它
Thread T = new Thread() {
public void run() {
try {
os.write((message+"\n").getBytes());
os.flush();
System.out.println("SENT : "+message);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
T.start();
如您所见,我检查输出以根据它向流程发送消息(基本上是回答问题)。然而,当涉及到“请输入…”时,我得到了这个例外
java.io.IOException: Read end dead
我的问题是,我无法找到如何通过读取进程的输出并根据它告诉我的内容发送消息来与进程“通信”
你能帮我吗
谢谢你的阅读