2012-02-17 159 views
1

我在Linux中遇到了Java Runtime的问题。我需要执行以下命令:带有简单引号的Java Runtime.getRuntime()。exec()

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

+10

你应该先学习如何接受回答回答你过去的问题。详情请看这里:http://stackoverflow.com/faq#howtoask – 2012-02-17 10:13:46

+0

'blastdbcmd'没有包含在一个字符串中,即“blastdbcmd”。如果这不是问题,那么你在哪里得到NullPointerExcepiton? – 2012-02-17 10:15:21

+1

@EmilH如果'blastdbcmd'不是一个包含String的变量,他会得到一个编译错误,而不是NullPointerException(这是一个运行时错误)。 – 2012-02-17 10:21:38

回答

1

If该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 
相关问题