我正在尝试创建一个与基于终端的程序交互的GUI,在本例中是以太坊的geth控制台。我能够启动它,但我不知道如何在运行时发送命令或检索输出。
我已经尝试过其他程序,比如Vim,但是在程序启动后,一切都与我的程序完全分开,我无法再给它任何命令。
在将StackOverflow和匹配解决方案一起搜索之后,这就是我想出来的,而且它是我最接近成功的。
public static void main(String[] args) throws IOException{
String[] command = {"gnome-terminal", "-e", "vim temp.txt"};
Process proc = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
writer.write(":x");
writer.flush();
writer.close();
}
}
这将启动Vim,创建temp.txt,但是Vim只是打开而作者什么都不做。
我正在尝试做什么?
P.S。我对C ++没问题,但我更喜欢Java,因为我对它更熟悉。
答案 0 :(得分:0)
On the GO-Ethereum Wiki它说它支持:
Commandline Options,在这种情况下你会
public static void main( String[] args )
throws JsonParseException, JsonMappingException, IOException {
final String INPUT_JSON = "{\"start\" : \"11/23/2016\"}";
// final String INPUT_JSON = "{\"start\" : \"1972-12-28T12:00:01.000Z\"}";
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule( new JodaModule() );
DateFormat dateFormat = new SimpleDateFormat( "MM/dd/yyyy" );
objectMapper.setDateFormat( dateFormat );
Bean bean = objectMapper.readValue( INPUT_JSON, Bean.class );
DateTime start = bean.getStart();
System.out.println( start );
}
public class Bean {
public DateTime start;
public Bean() {
// TODO Auto-generated constructor stub
}
public DateTime getStart() {
return start;
}
public void setStart( DateTime start ) {
this.start = start;
}
}