У меня есть проект, который разработан с использованием Dropwizard и Gradle. Когда я хочу запустить сервер, я могу просто запустить его внутри IntelliJ IDEA с gradle run
как runconfiguration.IntelliJ IDEA не может убить мой сервер Dropwizard
Выполнение этого запускает мой сервер, и я могу взаимодействовать с ним, как и ожидалось, даже отладка с 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, сервер будет убит.
Поскольку это не так хорошо для разработки, я ищу здесь некоторые рекомендации.
Фактически, он не убивает исходный экземпляр, поэтому порт все еще связан. У меня была проблема с загрузкой Spring с помощью Gradle в IntelliJ. В конечном итоге я запускаю сервер с помощью стандартной командной строки, и он запускается и прекращается. Не уверен, почему IJ не отпустил это правильно. – cjstehno
В настоящее время я также использую терминал, но таким образом вы не можете использовать отладчик - вы зависите от отладки вывода на консоль. – akohout