Я искал довольно много, но не могу найти ответ. Я только что обновил 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 фактически не осуществляет что то, или почему не найти его?
Я добавил Eclipse в качестве тега, поскольку серверный адаптер Tomcat поставляется из проекта Eclipse Webtools, который предварительно установлен в STS. –