2016-10-25 12 views
0

This question은 프로젝트에서 특정 클래스를 실행하는 작업을 실행할 때 System.in을 사용하는 방법을 설명합니다.System.in을 사용하기 위해 Gradle을 가져올 수 없습니다.

그러나 내가 현재이 작동하지 않습니다에 대한 : 나는 application 플러그인을 포함하고 있지만 다음과 같은 라인 build.gradle에서 :

mainClassName = "misc.StreamsExp" 
run{ 
    standardInput = System.in 
} 
task stream(type: JavaExec, dependsOn: assemble){ 
    classpath sourceSets.main.runtimeClasspath 
    main = "misc.StreamsExp" 
} 

아래의 응용 프로그램 코드에서 readLine으로 라인이 차단되어야하지만 그렇지 않다 :

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

String enteredLine = ""; 
while(enteredLine == null || ! enteredLine.equals("q")){ 
    System.out.println("spuds"); 
    enteredLine = br.readLine(); 
} 

... 대신 것은 단지 영원히 회전 :

욕구가 마구
욕구가 마구
욕구가 마구
...

NB 내가 자바 8.91로, 윈도우 10 OS에서입니다. Windows DOS 콘솔과 Cygwin을 모두 시도했습니다.
NB2이 stream 작업을 Eclipse (Gradle STS Eclipse 플러그인) 내에서 실행하면 동일한 문제가 발생하지만 일 때 : 차단이 예상대로 발생합니다.

답변

0

하아 ... 당신이 영원히 곤란을 겪을 것이라고 생각하는 곳 중 하나이며 SO에 게시 한 후 2 분이 지나면 해결책을 찾을 수 있습니다!

task stream(type: JavaExec, dependsOn: assemble){ 
    standardInput = System.in 
    classpath sourceSets.main.runtimeClasspath 
    main = "misc.StreamsExp" 
} 

이상하게도, 프롬프트 "욕구가 마구"입니다 : 내가

대답은 당신과 같이, 실행중인 작업에 선 standardInput =을 넣어하는 것입니다 ... 다른 사람을 위해 여기를 떠날거야 KN입니다 스트림

... : 건물의 88 %>

>하여 Windows DOS 터미널에서 다음 내가 언급 한 질문에서 언급 된 자신의 "버그". Cygwin에서이 버그는 발생하지 않습니다.

경고 : Windows DOS 터미널과 Cygwin 터미널에서 작동합니다 ... NOT Eclipse에서 맞춤형 stream 작업을 실행할 때 문제가 해결되었습니다!

+0

IntelliJ IDEA에서이 기능이 작동하지 않습니다. –

+0

맞아 ... 내 말처럼, Eclipse IDE에서는 작동하지 않는다. 그것은 CLI 터미널에서 작동하는 것 같습니다. –

관련 문제