Tomcat не развертывает новую версию файлов вообще-linux / eclipse

у меня проблема с тем, как tomcat развертывает мои файлы на сервере.

Я установил Tomcat 7 в /opt/tomcat7.

в моем eclipse я указал этот путь как мой сервер tomcat.

мой каталог рабочего пространства /home/maciej/workspace/<projects here>

теперь, если я редактирую файл класса и добавляю просто log statement

log.info("blabla"); и затем развернуть 'NEW' версия файла через-run на сервере, я не вижу этого 'blabla' в мой выходной. Он похоже, хотя я изменил файл класса, он не был должным образом развернут в tomcat. Tomcat читает бог знает что, но, конечно, не файл, который он должен читать.

EDIT: я recofnigured мой Tomcat в Eclipse и теперь:

Server Path = /opt/tomcat7
Deploy Path = /opt/tomcat7/webapps <- used to be .metadata/blablabla default 
                                      eclipse tomcat location

когда я открываю "конфигурацию открытого обеда" в аргументах / рабочем каталоге, опция по умолчанию-билет с серым путем /home/maciej/Desktop

это должно быть изменено?

это не tomcat рабочий каталог /opt/tomcat7/work ?

какие-либо предложения / идеи? Поскольку эта проблема немного действует мне на нервы, я не могу разработать приложение.

3 ответов


на Server Path такой же Tomcat installation directory в модальном вы видите в Window>Preferences>Server>Runtime Environments после удара Edit. Это должно быть установлено в /opt/tomcat7 или там, где живет корень вашей установки Tomcat.

на Deploy Path относительно Server Path. Он должен быть!--10-->, если у вас уже есть вещи и вы хотите отдельный каталог. Вы не сможете редактировать это, пока не выключите Tomcat и не удалите все webapps под ним через Servers вид.

попробуйте снять флажок Modules auto reload by default если Вы доверяете горячей замене JDK, что вы должны, если вы используете JDK 1.7 или 1.8 и просто хотите увидеть вставленный оператор журнала.

рабочий каталог, который вы упомянули, - это только корневой каталог, который Tomcat использует для выплевывания дампов потоков при сбоях и тому подобное. Это не имеет ничего общего с каталогом Tomcat "work".


открыть вид сервера: окно - >показать вид - >другие - >серверы. Выберите правильный сервер, щелкните правой кнопкой мыши, выберите "Очистить", а затем перезапустите tomcat. Это должно помочь.


если вы что-то измените в проекте, Eclipse будет автоматически создавать и "развертывать" файлы в указанном Вами месте. По умолчанию работа Eclipe останавливается, а остальное зависит от tomcat.

Tomcat, как и любой веб-сервер Java, обнаруживает изменения в JSPs и перекомпилирует их. Тем не менее, изменения в классах не влияют из-за того, как работает загрузка классов Java. Для новой версии класса, который будет использоваться tomcat, вам нужно:

  1. не загрузили класс раньше. Например, вы запускаете tomcat, но затем видите ошибку перед выполнением любого запроса. Если вы измените класс, это изменение будет использоваться, потому что класс еще не был загружен.
  2. перезагрузить приложение. Это означает, что все классы отбрасываются и все начинается заново.

самый простой способ перезагрузить приложение, по умолчанию, чтобы сделать изменение на web.xml. Если вы посмотрите на конфигурацию tomcat conf/context.xml вы можете увидеть, что есть. Любое изменение вызовет перезагрузку контекста. Таким образом, вы можете либо внести искусственное изменение в файл, либо добавить ресурс, например WEB-INF/version.properties и создать другой version.properties С любой сборки.

в любом случае перезагрузка сложного приложения требует времени. Вот почему есть плагины, такие как JRebel. Но прежде чем вы пойдете по этому пути (который добавляет еще одну движущуюся часть к вашей настройке), вы также можете попробовать использовать поддержку Eclipe для замены горячего кода. Вы начинаете tomcat в отладка, подключение к нему с помощью Eclipse, а затем изменение некоторого класса. Eclipse попытается перекомпилировать класс и загрузить новое определение в котяра. Если он не сработает, он скажет вам. Как правило, это произойдет, когда вы измените структуру программы и преуспеете, когда вы просто измените реализации метода.