2012-02-17 162 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 
相關問題