У меня есть большой скрипт perl. Я хочу начать с моей java-программы. Я интенсивно искал в Интернете все возможности, и они ничего не помогли мне.Runtime.getRuntime(). Exec() скрипт perl в java 1.7
Я создал следующий скрипт java для запуска своего скрипта perl командной строки.
try {
String[] command = {"perl", "C:\\Users\\Rick\\Documents\\Perl\\InDelSub_finder_v0.2.0.pl"};//System.getProperty("user.dir")+"\\src\\InDelSub_finder_v0.2.0.pl", "-h"};
String[] comm = {"-h"};
System.out.println(Arrays.toString(command));
System.out.println(Arrays.toString(comm));
Process p = Runtime.getRuntime().exec(command, comm);
p.waitFor();
try{
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine())!=null){
System.out.println(line);
}
}catch(IOException e2){
e2.printStackTrace();
}
System.out.println("exitValue = " + p.waitFor());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Я пытался использовать String[]
и String
дать в exec()
, но в конце концов оба не работают, он продолжает давать мне exitValue() = 255
. Я также попробовал (как вы можете видеть в разделе комментариев), что я попробовал несколько способов доступа к правильному файлу, но это не то, что происходит не так. Я думаю, что это имеет какое-то отношение к тому, что по какой-то причине он не может открыть программу.
Может ли кто-нибудь помочь мне в этом? Я действительно потерялся в этом, и мне нужно, чтобы продолжить свою работу.
Большое спасибо за ваше время.
Спасибо, что ответили на мой вопрос killer_PL, я попытался переместить -h также в массив команд, но это не сработало. (Я назвал небольшой скрипт, который возвращает только время, это действительно сработало.) Однако я не нашел нигде, что perl возвращает этот код с помощью функции 'die'. Большое вам спасибо за это, я могу работать с этим немного дальше. – RickBioinf
Я серьёзно обязан вам одним мужчиной! Вы спасли меня. В моем скрипте perl есть функции 'die', которые вернули код 255. Я не понимал, что это произошло из моего перла, а не из моей java. – RickBioinf
Не забудьте постоянно получать контент из запущенного процесса - сделайте исследование для этого. waitFor может просто повесить ваше приложение, если буфер вывода будет заполнен. –