带有简单引号的Java Runtime.getRuntime()。exec()

时间:2012-02-17 10:12:13

标签: java runtime runtime.exec

我在Linux中遇到Java Runtime的问题。我需要执行这个命令:

  

blastdbcmd -db'“mydb”' - info

所以我使用这个Java代码:

 String[] cmd = new String[] {blastdbcmd ,"-db", "\'","\"", mydb,"\"","\'","-info"}  
 Process p = Runtime.getRuntime().exec(cmd);
 p.waitFor(); 

但它不起作用:每次我收到java.lang.NullPointerException例外... 有谁能够帮我?

如果我尝试:

  

blastdbcmd -db“mydb”-info

它有效,但如果我有像

这样的命令,那么简单的引号是必要的
  

blastdbcmd -db“mydb mydb2”-info

1 个答案:

答案 0 :(得分:1)

如果blastdbcmd期望带有文字双引号字符的参数:

String[] cmd = new String[] {"blastdbcmd", "-db", "\"mydb mydb2\"", "-info"};

相当于

$ blastdbcmd -db "\"mydb mydb2\"" -info

如果不是:

String[] cmd = new String[] {"blastdbcmd", "-db", "mydb mydb2", "-info"};

相当于

$ blastdbcmd -db "mydb mydb2" -info