我在Linux中的Java Runtime有问题。我需要执行以下命令:


  blastdbcmd -db'“ mydb”'-信息


所以我用这个Java代码:

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


但这是行不通的:每次我收到java.lang.NullPointerException异常时...
有谁能够帮助我?

如果我尝试:


  blastdbcmd -db“ mydb”-信息


它有效,但是如果我有类似以下命令,则必须使用简单的引号


  blastdbcmd -db“ mydb mydb2”-信息

最佳答案

如果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

关于java - Java Runtime.getRuntime()。exec()带有简单引号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9326353/

10-12 02:44