2016-06-18 1 views
3

아이디어가 Windows에서 순수 cmd.exe와 비교할 때 어떻게 배치 구성이 실행됩니까?Intellij stdin rederection

내 Java 응용 프로그램을 실행하기위한 배치 구성을 만듭니다. 내가 그것을 실행하면 내이 아이디어 콘솔에서 scipt 및 결과 표시 : 표준 입력에서

cmd.exe /c java -classpath C:\app;C:\app\libs.jar App < input.txt 

이 응용 프로그램을 기다리고 입력합니다. 이 행은 그것을 실행하고 input.txt 파일에서 읽어야합니다. 그러나 그것을 기다리는 독서의 insted. 아이디어 콘솔에서^D를 누르면 앱에서 입력이 없음을 인쇄합니다.

동시에 아이디어 시작 콘솔에서 Windows cmd로이 시작 스크립트를 붙여 넣을 때 예상대로 모든 것이 발생하고 응용 프로그램이 파일을 읽고 올바르게 끝냅니다.

나는 stackoverflow 답변을 읽고 외부 도구 아이디어 옵션을 시도하기위한 제안을 찾았습니다. 나는 다음과 같이 실행하려고한다 :

java -classpath C:\app;C:\app\libs.jar App < input.txt 

그러나 여전히 입력을 기다리고있다. 뿐만 아니라 내가 인수로 파일 이름을 전달하면 자바 응용 프로그램 구성을 실행으로,이 입력을 기다립니다

"C:\Program Files\Java\jdk1.8.0_92\bin\java" 
-Didea.launcher.port=7533 
"-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IDEA\bin" 
-Dfile.encoding=UTF-8 
-classpath "long..long..classpath" 
com.intellij.rt.execution.application.AppMain Col < input.txt 

을 나는 표준 입력의 rederection에 대한 몇 가지 링크 (one, two, three)을 발견했고, 방법이없는 것처럼 보인다 아이디어만으로 코드에서이 작업을 수행 할 수 있습니다. 감사합니다. 내가 찾았어요

+1

내가 발견 한 유일한 방법은 인수로 패스 파일 이름과 같은 주요 뭔가의 시작 부분에 같은 추가 :'(args.length> 1) System.setIn (new FileInputStream (args [1]));' –

+1

@ useruser272933'System.setIn'에 대해 전혀 알지 못했습니다. 당신이 대답으로 쓸 수 있다면, 나는 확실히 그것을 upvote 줄. –

+0

답변으로 작성했습니다!) –

답변

7

유일한 방법은 메인 함수에 인수로 패스 파일 이름과 같은 줄을 추가 :

if(args.length > 1) 
    System.setIn(new FileInputStream(args[1]));