Java 프로세스가있는 IPC를 포함하여 외부 프로세스 통합에 대한 심도있는 Java 애플리케이션이 있습니다. 지금 당장은 자바에서 powershell 스크립트를 실행하기 만하면된다.어떤 명령 행 인자로도 exec 호출시 Java IOException이 발생합니다.
당신이 무엇을보고와private void runPowershellScript() {
String command =
"" + "powershell" + " ";
// Paths.get("").toAbsolutePath() + "\\" + scriptFileName + " " +
// Paths.get("").toAbsolutePath() + "\\" + INPUT_FILE_NAME + " " +
// Paths.get("").toAbsolutePath() + "\\" + OUTPUT_FILE_NAME + "";
try {
ProcessBuilder builder = new ProcessBuilder(command);
builder.redirectErrorStream(true);
Process process = builder.start();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println ("Stdout: " + line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
내가의 주석 라인의 (모든 추가하면, 나는 윈도우 파워 쉘의 이름과 저작권이 판독기를 통해 나오는 얻을 :하지만, 내가 뭘 찾았는지
나는 강하고 약한 시세의 12 개의 조합을 시도했습니다 java.io.IOException: Cannot run program "powershell C:\Users\Geoff\Code\OPTIP\FakeProgram.ps1 ": CreateProcess error=2, The system cannot find the file specified
, 나는 cmd.exe /c powershell ...
에 인수로 전달 시도했지만 아무것도 나는 실행을 시도하지했습니다 적절한 경로에있는 해결, 예를 들어 C:\Users\Geoff\Code\OPTIP\FakeProgram.ps1
는) 내가 얻을 스크립트. 명령 문자열에 공백이 하나 있으면 IO 예외가 발생합니다.
문자 인코딩과 관련이 있는지 궁금합니다. 내가 간단하게 powershell을 호출하면 reader.readLine()
에서 돌아오고 있습니다. W\u0000i\u0000n\u0000 ...
저는 각 IDE 사이에 null 문자가있는 "Windows Powershell"이라고 말하는 IDE의 (IntelliJ 's) 방법을 추측합니다.
명령있는 경우, 외부 프로그램을 호출 할 파일과 그 인수를 의미 문자열 목록을 :
자바 ProcessBuilder documentation는 인수로 전달할 수 있습니다 정확히 무엇에 약간 모호합니다. 유효한 운영 체제 명령을 나타내는 문자열 목록은 시스템에 따라 다릅니다. 예를 들어, 각 개념적 인수가이 목록의 요소가되는 것이 일반적이지만 프로그램이 명령 행 문자열을 토큰화할 것으로 예상되는 운영 체제가 있습니다. 이러한 시스템에서 Java 구현은 정확히 두 개의 요소를 포함하는 명령을 요구할 수 있습니다.
그 의미는 알지 못합니다. 명령 줄 CMD 및 Powershell 창에서 작동하도록 노력하고있어 및 또한 Windows 실행 대화 상자에서. 위의 방법의 클래스를 포함
요점 : https://gist.github.com/Groostav/9c5913e6f4696a25430d 요점 내 PowerShell 스크립트를 포함 : 어떤 도움 https://gist.github.com/Groostav/347a283ac7ec6a738191
감사합니다.
나는 그것을 얻는다 고 당황 스럽다. 무리 감사. 필자가 지금 겪고있는 문제는 [PowerShell은 Standard in, error, out을 사용하지 않기 때문에] Java의'Process'가 PowerShell과 잘 작동하지 않는다는 것입니다 (https://blogs.oracle.com/vaibhav)./entry/not_as_easy_as_we)? – Groostav