我正在尝试编写一个小应用程序来自动使用外部应用程序,这是cisco任何连接移动客户端。它提供了一个命令行工具,可用于连接到VPN。
我想使用apache commons-exec库从我的java应用程序运行这个命令行工具,并能够读取他的输出以发送所需信息。
我已经在网上搜索了#34;如何沟通&#34;有一个外部应用程序,但我发现的唯一帖子是这篇文章:Trouble providing multiple input to a Command using Apache Commons Exec and extracting output它只是说&#34;嘿,我找到了解决方案&#34;但我不明白他是如何做到的。< / p>
当我开始这个过程时,我运行一个读取输入的函数:
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();
函数发送消息只是运行一个线程在进程输入流中写入然后刷新它。
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();
正如您所看到的,我检查输出以根据它向进程发送消息(基本上是回答问题)。但是,当谈到&#34;请输入...&#34;,我得到了这个例外
java.io.IOException: Read end dead
我的问题是我找不到如何沟通&#34;通过阅读他的输出并根据它告诉我的信息发送消息来完成该过程。
你能帮助我吗?
感谢阅读。