2014-11-13 3 views
1

Я искал довольно много, но не могу найти ответ. Я только что обновил STS (от 3.2), чтобы попробовать Tomcat 8 (с 7.0.53). У меня есть STS 3.6.2 и Tomcat 8.0.15. После добавления сервера TC8 и его настройки он не запускается, то с этой корневой ошибкой:Tomcat 8 не запустится

java.lang.ClassNotFoundException: org.apache.juli.WebappProperties

Так что я прочитал совсем немного и нашел this guide для переключения с жестко закодированным Викискладом каротажа с помощью Juli к Log4J и последовал за ним в письме без везения. Соответствующий отрывок:

The internal logging for Apache Tomcat uses JULI, a packaged renamed fork of Apache Commons Logging that, by default, is hard-coded to use the java.util.logging framework. This ensures that Tomcat's internal logging and any web application logging will remain independent, even if a web application uses Apache Commons Logging.

To configure Tomcat to use an alternative logging framework for its internal logging, one has to replace the JULI impementation that is hard-coded to use java.util.logging with a JULI implementation that retains the full Commons Logging discovery mechanism. Such an implementation is provided as an extras component. Instructions on how to configure Tomcat to use Log4j framework for its internal logging may be found below.

Я также нашел this answer (на другой вопрос) и this question отсюда, где последний, как представляется, имеют почти идентичную проблему без какого-либо решения.

Я искал все JAR в своих папках bin/lib Tomcat и не нашел такого класса (включая различные версии tomcat-juli.jar и tomcat-juli-adapters.jar). В этом классе/интерфейсе я не вижу ссылки в Интернете, кроме руководства по протоколу Tomcat 8, связанного ранее. Итак, вопрос: почему Tomcat ищет этот класс?

Опять из связанного руководства, вот что он говорит:

If using a class loader that implements the org.apache.juli.WebappProperties interface (Tomcat's web application class loader does) then property replacement is also performed for ${classloader.webappName} , ${classloader.hostName} and ${classloader.serviceName} which are replaced with the web application name, the host name and the service name respectively.

Почему мой загрузчик классов Tomcat фактически не осуществляет что то, или почему не найти его?

+0

Я добавил Eclipse в качестве тега, поскольку серверный адаптер Tomcat поставляется из проекта Eclipse Webtools, который предварительно установлен в STS. –

ответ

1

Процесс конфигурации Ant Tomcat копирует Tomcat 7's tomcat-juli.jar в Tomcat 8, вызывая проблему.

Получение правильного tomcat-juli.jar для Tomcat 8 из раздела Tomcat Extras от Apache устраняет проблему.

1

Этот интерфейс находится в tomcat-juli.jar, а загрузчик класса веб-приложений Tomcat реализует этот интерфейс.

Чтобы устранить эту проблему, вам не нужно переключиться на запись в журнале log4j.

tomcat-juli.jar (который должен находиться в каталоге bin), по-видимому, отсутствует в пути к классу. Не уверен, что это ошибка конфигурации с вашей стороны чего-то, что нуждается в настройке интеграции Eclipse для Apache Tomcat.

Предлагаю вам начать с чистой установки Tomcat 8.0.15 из ASF, убедитесь, что она работает из командной строки, а затем попытайтесь интегрировать ее с STS/Eclipse.

0

Проверьте версию на Tomcat, которую вы используете. По умолчанию мы ожидаем Tomcat 8.5.4 или выше. Если вы хотите использовать более старую версию, вам нужно будет добавить tomcat-juli, как описано в примечаниях к выпуску