これはstackoverflowに関する私の最初の質問なので、簡潔で関連性のあるものにしようと思います.
現在、システム上にある外部プログラムを呼び出そうとする Java プログラムを作成していますが、これを行うには、関連するライブラリへのリンクを設定するシェル スクリプトを呼び出して、システムがリンクされていることを確認する必要があります。外部プログラムが実行される前に、これらに。
当面の問題は、Java を介してシェル スクリプトを呼び出すことができないことです。高低を調査し、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 はそうではなく、これが問題の場所です。
前もって感謝します。