Я понятия не имею, как работает Eclipse, но похоже, что вы пытаетесь подключиться к одному и тому же порту JPDA как при остановке, так и при запуске Tomcat. Когда вы запускаете Tomcat, это, очевидно, нормально, но когда вы пытаетесь остановить его - остановка не может быть выполнена, потому что порт уже занят.
Есть много способов решить эту проблему, и я лично использую:
1) Запускать / останавливать Tomcat извне. tomcat/bin/catalina.sh jpda start
, tomcat/bin/catalina.sh stop
работает из коробки без изменений. Может быть, Eclipse позволяет запускать внешние скрипты?
2) Запустите / остановите Tomcat как простую Java-программу из Eclipse. Таким образом, вам даже не понадобится удаленная отладка, так как ваша программа будет отлаживаемой, как любая другая Java-программа. Мой конфиг IntelliJ выглядит так:
Основной класс: org.apache.catalina.startup.Bootstrap
Параметры VM: -ea -cp $CLASSPATH:/path/to/tomcat/bin/bootstrap.jar -Dcatalina.base="/path/to/tomcat" -Dcatalina.home="/path/to/tomcat" -Djava.io.tmpdir="/path/to/tomcat/temp" -noverify -Xmx400M -XX:MaxPermSize=400M
Параметры программы: start
Рабочий каталог: /path/to/tomcat
Затем вы можете остановить tomcat, просто убив процесс Java или создав подобную среду с stop
в качестве параметра программы, который корректно отключит его. Если вы заглянете внутрь catalina.sh
, все, что делает этот скрипт, - это на самом деле подготовить все эти параметры и запустить Tomcat таким же образом.