(예외가 발생) 자바에서 작동하지 않습니다 다음 정확하게 자바의 구현 왜에 다른 무엇Java의 java.lang.Runtime.exec()와 PHP의 exec() 사이의 차이점은 무엇입니까?
exec("cd mydir; myprog");
가 (이 보인다 : PHP에서
Runtime.getRuntime().exec("cd mydir; myprog");
같은 작품 잘 언뜻보기에는 더 제한적 임)?
(예외가 발생) 자바에서 작동하지 않습니다 다음 정확하게 자바의 구현 왜에 다른 무엇Java의 java.lang.Runtime.exec()와 PHP의 exec() 사이의 차이점은 무엇입니까?
exec("cd mydir; myprog");
가 (이 보인다 : PHP에서
Runtime.getRuntime().exec("cd mydir; myprog");
같은 작품 잘 언뜻보기에는 더 제한적 임)?
자바 간부 명령은 하지 시스템 명령 인터프리터를 사용한다. "cd mydir; myprog"와 같은 것은 시스템 명령 행 인터프리터 (예 : windows cmd
, 리눅스의 sh
)를 두 개의 분리 된 명령으로 분할하고 각각을 실행하는 것에 달려 있습니다. java는 시스템 명령 인터프리터를 호출하지 않으므로 작동하지 않습니다. 각각의 명령을 개별적으로 호출하거나 명령 행의 일부로 원하는 인터프리터를 직접 호출해야합니다.
좋습니다. 그렇지만 왜 그렇게 구현되었는지 궁금합니다. 왜 PHP처럼 명령 인터프리터를 사용하지 않습니까? 나에게는 불필요한 제한 사항처럼 보입니다. – Ree
은 명령 행 인터프리터의 도움에 따라 아마 플랫폼에 독립적 인 자바의 시도와 충돌 할 것이다. 분명히, 당신이 exec를 호출 할 때, 당신은 아마 그 영역에서 벗어 났을 것입니다 ... 일반적으로 java는 기본 OS에 "원시"액세스를 허용하기를 주저했습니다. 그리고 제공 될 때, 일반적으로 "가장 기본적인"레벨입니다. 이 경우 "가장 기본적인"레벨은 직선 명령을 실행할 수있게합니다. – jtahlborn
애플릿을 실행 중이며 서버의 CLI 환경에서 Java가 아닌 것으로 가정합니다. 그렇다면 Java 런타임은 서버가 아닌 클라이언트 컴퓨터에서 실행 중입니다.
Java에는 세미콜론보다 여러 명령을 처리하는 더 좋은 방법이 있습니다.
Runtime.exec(String[])
을 및 문자열 배열의 요소 명령의 각 인수합니다
Runtime.exec(String)
시도는 당신의 명령을 각각에 대해이 작업을 사용하는 대신 서명을 사용하는.
저는 사람들에게 이런 문제가 있다는 것을 알았고 여러 가지 방법이있을 것이라고 확신합니다. 그러나 대부분의 사람들이 회신하는 것을 보았습니다. 앞에 cmd를 추가하십시오.
Runtime.getRuntime().exec("cmd cd mydir; myprog");
동일한 작업 디렉토리에서 두 프로그램을 모두 실행하고 있습니까? 예외는 무엇을 말합니까? – BoltClock