이 질문은 stackoverflow의 첫 번째 질문이므로 간결하고 관련성이 높은 내용을 유지하려고 노력할 것입니다.Java에서 UNIX 소스 명령 실행
현재 시스템에있는 외부 프로그램을 호출하려고하는 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는 잘 작동하고 수행하는 메서드를 호출 할 때 실제로 의도 한 디렉토리에 메인 .exe를 복사합니다. 프로세스 k 그러나 않습니다 및이 문제가있는 곳입니다.
미리 감사드립니다.
모든 공간이 중요 할 때''-c "'대신''-c"'를 사용해보십시오. –