2012-02-22 3 views
3

Runtime.getRuntime(). exec() 플랫폼이 독립적입니까?

Runtime.getRuntime().exec("cmd /c"); 

플랫폼 독립적인가, 아니면 내가 매개 변수에 플랫폼 특정 명령을 통과해야?

감사


명령의 리눅스 상응하는 무엇입니까 cmd /c start /b java -jar

+1

cmd는 windows 명령입니다 .... 다른 OS에는 적용되지 않습니다. – VirtualTroll

+1

당신의 생각은 무엇입니까? 자바는 맵핑 테이블을 제공 할 수 없다. 맵핑 테이블을 다른 OS 사이에 매핑하는 것이 불가능하기 때문이다. – home

답변

7

Runtime.getRuntime(). 간부 인() 방식으로 플랫폼 독립적이 모든에 외부 실행 파일을 시작하는 것입니다 플랫폼. 실행 파일 자체는 물론 거기에 있어야합니다. 따라서 Linux에서 notepad.exe를 시작하면 작동하지 않을 가능성이 높습니다 (와인 및 메모장을 설치 한 경우 제외). 그러나 이것은 다른 이야기입니다.

Windows의 경우 cmd.exe에 입력 할 내용을 입력하십시오 (세부 정보는 다음을 참조하십시오). 그러나 Windows에서 자동 경로 조회를 할, 당신은 관련된 뷰어와 PDF 파일을 엽니 다

Runtime.getRuntime().exec("start iexplore.exe"); 

또는

Runtime.getRuntime().exec("start my.pdf"); 

같은 것을 할 필요가있다.

리눅스에서는 Bash와 같은 쉘에서 수행 할 수있는 모든 작업을 수행 할 수 있지만 파이프 연산자와 같은 bash 내장 명령은 사용할 수 없습니다. 프로그램을 시작하고 인수를 전달할 수 있습니다.

당신이 사용할 수있는 리눅스의 다른 자바 인스턴스를 시작하려면 :가 PATH에없는 경우

Runtime.getRuntime().exec(new String[] {"java","-jar","myjar.jar"}); 

는 자바 실행 파일의 절대 경로를 사용합니다.

+0

답장을 보내 주셔서 감사합니다. 'cmd/c start/b java -jar jarfile.jar'과 같은 리눅스가 무엇인지 말해 줄 수 있습니까 –

+1

이 답변에 이것을 추가했습니다. 감사합니다. – Daniel

3

플랫폼에 독립적입니다. 타겟팅하려는 각 운영 환경에 대해 외부 명령 버전이 필요합니다.

1

Runtime.getRuntime().exec()은 플랫폼에 독립적입니다. cmd /c입니다. Unix에서 cmd /c을 실행하려면 어떻게 될 것으로 예상됩니까?

외부 명령을 실행하는 교차 플랫폼 프로그램을 만들려면 플랫폼 별 명령을 보유해야합니다.

+0

. linux에서'cmd/c start/b java -jar'와 같은 것은 무엇입니까? –

1

플랫폼에 따라 다릅니다. relevant javadoc (강조 광산)의 부분 인용 : cmdarray 인수

이 검사 방법은 유효한 운영 체제 명령이다. 유효한 명령은 시스템에 따라 다르지만 적어도 명령은 null이 아닌 문자열의 비어 있지 않은 목록이어야합니다.

1

물론 셸 명령을 실행하고 있습니다. 당신이하고 싶은 일을하는 더 깨끗한 방법이 없다면 자바로 그렇게하는 것을 제안하지는 않습니다. 그것은 포터블이되는 Java의 목적에 어긋납니다.

관련 문제