현재 디렉터리에 fingerVerification_fdu03이라는 실행 파일이 있습니다. ProcessBuilder를 사용하여 Java에서 해당 실행 파일을 실행하고 싶습니다.
Process pb = new ProcessBuilder("fingerVerification_fdu03").start();
하지만 자바 프로그램과 같은 디렉토리에 있어도 파일을 찾을 수 없다는 뜻입니다. 일반적으로 Linux 터미널을 통해 fingerVerification_fdu03 실행을 간단히 실행할 수 있습니다.
./fingerVerification_fdu03
실행됩니다. 내가 무엇을 잘못하고 있지?
최신 정보:
디렉토리 추가를 시도했지만 여전히 동일한 문제가 발생합니다. 나는했다 :
String workingDirectory = new String(System.getProperty("user.dir"));
File tempDir = new File(workingDirectory);
Process p = new ProcessBuilder("fingerVerification_fdu03").
directory(new File(workingDirectory+"//")).start();
fingerVerification_fdu03 파일의 확장자에 문제가있을 수 있습니까? 어떤 확장 기능이 있는지 알아내는 방법을 모르겠습니다. 바이너리 파일이며 확장자를 나열하지 않습니다.
현재 디렉토리를 지정하여 프롬프트에서 명령을 실행합니다. 대부분의 경우 PATH
해당 디렉토리가 반영되지 않기 때문입니다.
결과적 PATH
으로 ProcessBuilder
호출 에서 (직간접 적으로) 설정해야 합니다 . 예를 들어 environment()
메소드가 반환 한 환경 맵에서 PATH를 수정하거나 실행 파일 이름을 수정하여 절대 또는 상대 디렉토리 경로를 반영 할 수 있습니다 (명령 줄에서 수행하는 것처럼)
Java 프로그램과 동일한 디렉토리에 실행 파일이 있다고해서 디렉토리를 지정하지 않고도 실행할 수 있다는 의미는 아닙니다. 기본적으로 PATH
현재 디렉터리 ( .
)를 포함하지 않으며 보안상의 이유로 포함하지 않아야하는 인수가 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다