Tomcat 8不会开始

时间:2014-11-13 00:00:53

标签: eclipse tomcat logging tomcat8 tomcat-juli

我一直在搜索,但找不到答案。我刚刚升级了STS(从3.2开始),所以我可以试用Tomcat 8(从7.0.53开始)。我有STS 3.6.2和Tomcat 8.0.15。添加TC8服务器并对其进行配置后,它拒绝启动,出现以下根错误:

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

所以我读了很多,发现this guide从硬编码的公共区域切换 - 通过Juli登录到Log4J并且没有任何运气跟着它到了字母。相关摘录:

  

Apache Tomcat的内部日志记录使用JULI,一个打包的重命名   Apache Commons Log的一个分支,默认情况下是硬编码使用的   java.util.logging框架。这确保了Tomcat的内部   日志记录和任何Web应用程序日志记录都将保持独立   如果Web应用程序使用Apache Commons Logging。

     

要将Tomcat配置为使用备用日志记录框架进行内部日志记录,必须替换JULI强制实施   是硬编码使用java.util.logging与JULI实现   保留完整的Commons Logging发现机制。这样的   实现作为附加组件提供。说明如何   配置Tomcat以使用Log4j框架进行内部日志记录   可能会在下面找到。

我还从这里找到了this answer(对于另一个问题)和this question,其中后者似乎有一个几乎相同的问题而没有任何解决方案。

我在Tomcat的bin / lib文件夹中搜索了所有JAR,但没有找到这样的类(包括tomcat-juli.jartomcat-juli-adapters.jar的各种版本)。除了之前链接的Tomcat 8 Logging指南之外,我几乎没有在这个类/接口的互联网上找到任何参考。所以,问题是:为什么Tomcat正在寻找这个类?

再次从链接指南中,这里是它所说的:

  

如果使用实现的类加载器   org.apache.juli.WebappProperties接口(Tomcat的Web应用程序   类加载器确实)然后执行属性替换   ${classloader.webappName}${classloader.hostName}和   ${classloader.serviceName}被Web应用程序替换   名称,主机名和服务名称。

为什么我的Tomcat类加载器实际上没有实现,或者为什么不找到它?

3 个答案:

答案 0 :(得分:1)

该接口位于tomcat-juli.jar中,而Tomcat的Web应用程序类加载器实现了该接口。

您无需切换到基于log4j的日志记录来解决此问题。

tomcat-juli.jar(应该在bin目录中)似乎在某个类路径中丢失了。不确定这是否是需要调整Eclipse集成Apache Tomcat的东西的配置错误。

我建议您从ASF开始安装干净的Tomcat 8.0.15,确保从命令行运行,然后尝试将其与STS / Eclipse集成。

答案 1 :(得分:1)

我们的Ant Tomcat配置过程将Tomcat 7的tomcat-juli.jar复制到Tomcat 8,导致问题。

从Apache的Tomcat Extras部分获取Tomcat 8的正确tomcat-juli.jar解决了这个问题。

答案 2 :(得分:1)

检查您正在使用的Tomcat上的版本。我们现在默认Tomcat 8.5.4或更高版本。如果您想使用旧版本,则需要添加tomcat-juli,如发行说明中所述