Java Runtime.getRuntime (). Exec () с простыми кавычками - PullRequest
1 голос
/ 17 февраля 2012

У меня проблема с Java Runtime в Linux. Мне нужно выполнить эту команду:

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 Ответ

1 голос
/ 17 февраля 2012

Если 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
...