2012-11-01 3 views
30

Java 및 gradle을 사용하여 콘솔 응용 프로그램을 작성하고 있습니다. application plugin을 사용 중이고 build.gradle에 필수 필드가 올바르게 구성되어 있습니다.Java 및 gradle을 사용하는 콘솔 응용 프로그램

내 주 수업에서 나는 과 연결된 BufferedReader을 가지고 있습니다. 문제는 다음과 같습니다. 프로젝트 디렉토리에 gradle run을 실행하면 리더가 내 콘솔 입력을 기다리지 않습니다. BufferedReader#readLine은 첫 번째 호출에서 null을 대신 반환합니다. 이 동작은 내가하는 일에 바람직하지 않습니다.

해결책은 무엇입니까? gradle을위한 별도의 콘솔 응용 프로그램 플러그인이 있습니까? 아니면 내 요구 사항에 맞춰서 application 플러그인을 조정해야합니까?

+0

4 년 후! Windows OS를 사용하고 있다면, Cygwin 터미널에서이 성가신 "> Building ..."작업이 실행되지 않는다는 것을 발견했습니다. 그러나 나는'standardInput = System.in'을 넣는 것이 특별히'task' 안에 정의 된 경우에만 작동한다는 것을 발견했습니다. –

답변

54

기본적으로 gradle 빌드의 system.in은 실행 (JavaExec) 작업의 system.in과 연결되어 있지 않습니다. 위에서 언급 한 바와 같이

run{ 
    standardInput = System.in 
} 
+2

감사합니다! 그것은 큰 도움이되었습니다. 이제 사용자에게 다음 입력을 요구할 때'> Building> : run'을 인쇄하지 않는 방법이 있습니까? – missingfaktor

+3

불행히도 지금은 아닙니다. 얼마 전에 문제를 제기했습니다 : http://issues.gradle.org/browse/GRADLE-1147 당신은 투표 할 수 있습니다. –

+0

다시 한번 감사드립니다. 이것은 또한 할 것이다. 당신의 대답을 수락하십시오. :) – missingfaktor

-3

자바 코드에 문제가있을 수 있습니다. 모든 응용 프로그램 플러그인은 java 코드를 컴파일하고 지정한 기본 클래스를 실행합니다. 애플리케이션 플러그인 (mainClassName)에 대해 지정한 주 클래스에 코드를 게시 할 수 있습니까?

+0

IntelliJ IDEA 내에서 코드를 실행했습니다. (파일을 마우스 오른쪽 버튼으로 클릭하고'Run .main'을 선택하면됩니다.) 제대로 작동합니다. – missingfaktor