我已經使用NetBeans v.8.2創建了一個java GUI。 Java非常新。從Java運行一個shell腳本返回「找不到命令」
GUI中的一個按鈕使用從GUI中的其他按鈕/文本字段收集的參數啓動shell腳本(我知道這不是理想的Java練習,但它適用於我的用例):
```
private void RunMacActionPerformed(java.awt.event.ActionEvent evt) {
String command[] = {scriptDirStr + "/./Master_run.sh",
projDirStr+"/",
DestDirStr+"/",
ECnonNormStr,
ECnormStr,
ProjID.getText(),
scriptDirStr +"/"};
System.out.print(Arrays.toString(command));
ProcessBuilder pb = new ProcessBuilder(command);
try {
Process p = pb.start();
} catch (IOException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
```
所以,這個想法是用一堆參數啓動Master_run.sh。 Master_run.sh運行其它R和Python腳本,例如:
python2 $script_Path/array_data_extractor.py $spath >>$spath/masterOutput.txt 2>>$spath/masterErrors.txt
和
Rscript $script_Path/1_APS_generator_master.R $spath $dpath $APS_src_filename $project_ID $APS_norm_src_filename >>$spath/masterOutput.txt 2>>$spath/masterErrors.txt
與
cat $spath/masterErrors.txt| mail -s $Project_title" done" [email protected]
結束我知道腳本被推出因爲我收到一封電子郵件,其中包含以下錯誤:
「...... 14行:python2:命令未找到」
和
「...... 16行:RSCRIPT:命令未找到」
當我運行Master_run.sh與來自終端內部的相同的確切參數,沒有這樣的錯誤。有人知道什麼可能會出錯和/或如何解決它?
爲了解釋這個問題,我得到了不同的行爲,從java內部啓動相同的命令,直接到命令行。
可以從腳本中獲取我的.bash_profile是否有竅門? – Atticus29
指定完整路徑的竅門。謝謝! – Atticus29