Java에서 gnuplot 프로세스를 실행하는 데 문제가 있습니다. 나는 gnuplot 스크립트 파일을 만들고 나서 자바 프로그램에서 실행하고있다. 나는 프로세스 빌더와 Runtime.getRuntime(). exec ("blah blah ...")를 사용하여 선행 작업을 작성하려고 노력했지만, 어느 것도 완전한 기능을 수행 할 수 없다. 재미있는 점은 gnuplot을 통해 생성하는 이미지 파일이 이름에 공백없이 디렉토리에 저장되지 않는 한 런타임을 사용하여 프로세스가 거의 완벽하게 작동한다는 것입니다. 그러나 ProcessBuilder가 전혀 작동하지 않으며 "CreateProcess error = 2, 지정된 파일을 찾을 수 없습니다"라는 메시지가 나타납니다.Java에서 gnuplot 프로세스를 실행하는 데 문제가 있습니다.
이 내용을 이해하는 데 너무 오래 걸렸습니다. 감사하겠습니다.
내가 사용하는 코드
은 여기에 있습니다 :File script = new File("Demo.plt"); //Script file that outputs to a PNG file
//This works as long as the script file doesn't output to a png with a space in it's filepath
Process aProcess = Runtime.getRuntime().exec("gnuplot " + script.toString());
Thread.currentThread().sleep(1000);
aProcess.waitFor();
//This doesn't work at all
ProcessBuilder builder = new ProcessBuilder("gnuplot " + script.toString());
builder.redirectErrorStream(true);
Process process = builder.start();
그리고 관계없이 출력 라인의 공간, 자바의 외부에서 실행하는 경우 스크립트가 작동하는지 알고있다. 나도 '\'(이스케이프 문자를 사용하여 공간) 시도하고 그 중 하나를 작동하지 않습니다. 사실, 여기 내가 사용하는 코드입니다 :
String graphName = "DemoGraph";
//Isolate the FilePath
String path = script.getPath();
path = path.replace(script.getName(),"");
path = path.replace(File.separator, "\\\\"); //Gets around any parsing errors in filepaths on Windows
path = path.replace(" ", "\\ "); //Should get around parsing errors with spaces in gnuplot, but it seems to be irrelevant.
scriptFileWriter.write("set output \"" + path + graphName + ".png\"\r\n");
자바에 문제가 될 수있어, 스크립트가 Windows 명령 줄에서 실행되기 때문에를, 그리고의 gnuplot 명령 행 및 frun에서 이중으로 실행되고 -clicking the
gnuplot에서 오류 메시지가 표시됩니까? "경로 이름에 공백이있을 때 원하는 디렉토리에 png 파일이 없습니다."이외의 다른 증상이 있습니까? – mgilson
또한 자바에 대해서는 잘 모르겠지만''출력 설정 \ ""+ path + graphName + ".png \"\ r \ n "'문자열을 출력하여 어떤 gnuplot 보고있어? – mgilson
다음 문자열 : '출력 설정'C : \\ Users \\ toms \\ Documents \\ NetBeansProjects \\ DRTTPS \\ Simulation \ Comparison \\ DemoGraph.png " ' Gnuplot에서 오류 메시지가 표시되지 않습니다. 내가 볼 수 있도록 오류 스트림을 표준 오류로 전달하는 방법을 잘 모르겠다. 대상 파일을 만들지 않는다는 것 외에 다른 증상은 없습니다. 이전에 가지고 있던 다른 오류는 파일을 만들었지 만 작성하지는 못했지만이 오류는 그냥 수행하지 않습니다. – Andrew