2012-03-29 2 views
0

Java 스윙을 사용하여 GUI를 만들려고합니다. 거기에서 나는 리눅스 시스템 명령을 실행해야한다. exec()를 사용해 보았습니다. 그러나 작은 따옴표가 포함되어 있으면 exec() 함수는 문자열을 구문 분석 할 수 없습니다. 내가 사용한 코드는 follows-로Java 프로그램 내부에서 linux 명령 실행

Process p = Runtime.getRuntime().exec("cpabe-enc pub_key message.txt '(it_department or (marketing and manager))'") 
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); 

입니다하지만이 같은 프로그램을 실행할 때 오류를 얻고있다 - "'("에서 구문 오류가 발생했습니다.

같은 명령이 실행 나는

Process p = Runtime.getRuntime().exec("cpabe-enc pub_key message.txt default") 

이 도와주세요 쓸 때. 귀하의 도움에 미리 감사드립니다.

답변

1

대신, 하나의 각 인수에 대한 문자열, 그리고 일반적으로 인수에 더 잘 작동하는 대신 String[]로 걸리는 간부-방법을 사용 배열로 매개 변수를 분할합니다. 의 라인을 따라 Somethign :

Runtime.getRuntime().exec(new String[] {"cpabe-enc", "pub_key", "message.txt", "(it_department or (marketing and manager))"}); 

또는 정확한 매개 변수가 무엇이든.

+0

덕분에 많이. 그것은 효과가 있었다. 내 프로그램이 완벽하게 돌아가고있다. –

0

최근에 이런 종류의 문제가 해결되었습니다. 나는 ... 여기

이 링크는 당신을 도울 수있는 희망입니다 ... ... 스윙 응용 프로그램 시나리오와 매우 비슷합니다 버튼 클릭에 쉘 스크립트를 호출하는 자바 FX를 사용했다

How to code in java to run unix shell script which use rSync internally in windows environment using cygwin?

Getting error in calling shell script in windows environment using java code and cygwin...!

해피 코딩 ... :)