我已经使用NetBeans v.8.2创建了Java GUI。 Java的新手。

GUI中的按钮之一使用从GUI中其他按钮/文本字段收集的参数启动外壳程序脚本(我知道这不是理想的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内部启动相同命令而不是直接在命令行上启动相同命令时出现了不同的行为。

最佳答案

您的Shell环境与Java环境明显不同。尝试指定python2和Rscript的完整路径。例如

/usr/local/bin/python2 $script_Path/array_data_extractor.py ...

10-08 15:58