Dropwizard와 Gradle을 사용하여 개발 된 프로젝트가 있습니다. 서버를 시작하고자 할 때 실행 설정으로 gradle run
으로 IntelliJ IDEA 내에서 간단하게 실행할 수 있습니다.IntelliJ IDEA가 Dropwizard Server를 죽일 수 없습니다.
이렇게하면 내 서버가 시작되고 예상대로 작동 할 수 있습니다. IntelliJ로 디버깅을해도 문제가되지 않습니다.
그러나 "중지"또는 "재실행"버튼을 사용하면 이전에 시작한 서버를 죽이지 않는 것처럼 보입니다. 대신 서버를 다시 실행하면 다음과 같은 예외가 발생합니다.
13:45:48: Executing external task 'run'...
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
Connected to the target VM, address: '127.0.0.1:61376', transport: 'socket'
:run
INFO [2014-12-16 12:46:01,393] io.dropwizard.server.ServerFactory: Starting my-project
Disconnected from the target VM, address: '127.0.0.1:61376', transport: 'socket'
WARN [2014-12-16 12:46:01,552] org.eclipse.jetty.util.component.AbstractLifeCycle: FAILED [email protected]: java.lang.RuntimeException: java.net.BindException: Address already in use
그래서 다른 프로그램에서 사용하려는 주소를 유지하는 것 같습니다. ps aux
을 실행하면 서버가 여전히 실행 중이고 요청에 응답 함을 알 수 있습니다. 터미널을 통해 죽일 때만 또는 IntelliJ IDEA를 종료하면 서버가 종료됩니다.
개발하기에 좋지 않으므로 여기에서 몇 가지 지침을 찾고 있습니다.
실제로 포트가 여전히 바인딩되도록 원래 인스턴스를 죽이지는 않습니다. IntelliJ의 Gradle을 통해 Spring 부트를 실행하는이 문제가있었습니다 - 표준 명령 줄 gradle을 통해 서버를 실행하고 시작하고 중지합니다. 왜 IJ가 그것을 놓아주지 않는지 잘 모르겠습니다. – cjstehno
현재 터미널도 사용하고 있지만 디버거는 사용할 수 없습니다. 콘솔 출력 디버깅에 의존합니다. – akohout