这是我关于 stackoverflow 的第一个问题,所以我会尽量保持简洁和相关。
我目前正在创建一个 Java 程序,它试图调用位于系统上的外部程序,但为了做到这一点,我需要调用一个 shell 脚本,该脚本设置到相关库的链接以确保系统已链接在外部程序可以执行之前,这些。
手头的问题是我无法通过 Java 调用 shell 脚本,我已经研究了高低,并且知道其他方法,例如使用 ProcessBuilder 类。不幸的是,我对尝试通过 Java 调用命令行语句的世界很陌生,所以我一直在寻找答案。
我正在使用的代码示例如下所示:
private void analyse_JButtonActionPerformed(java.awt.event.ActionEvent evt) {
// Get project path for copying of Fortran program to folder and execution
String projectPath = Newproject_GUI.getProjectPath();
String sourcePath [] = {"/bin/sh ", "-c ","source ~/set_env_WRF_gnu.sh"} ;
Runtime fortranAnalyser = Runtime.getRuntime();
try {
Process p = fortranAnalyser.exec("cp main.exe " + projectPath);
Process k = fortranAnalyser.exec(sourcePath);
BufferedReader is = new BufferedReader(new InputStreamReader(k.getInputStream()));
String line;
while ((line = is.readLine()) != null) {
System.out.println(line);
}
} catch (IOException ex) {
Logger.getLogger(Analyser_GUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
进程 p 工作正常,并且在调用该方法时确实将 main.exe 复制到预期的目录。然而,进程 k 没有,这就是问题所在。
提前致谢。