我已经找了很多次了,但找不到答案。我刚刚升级了STS (从3.2),以便我可以试用Tomcat 8(从7.0.53)。我有STS 3.6.2和Tomcat 8.0.15。在添加并配置TC8服务器之后,拒绝启动它,并出现以下根错误:
java.lang.ClassNotFoundException: org.apache.juli.WebappProperties
所以我读了相当多,发现本指南从硬编码的共用日志转换到Log4J,没有任何运气。有关节选:
Apache的内部日志使用JULI,这是Apache的一个打包的重命名叉,默认情况下,使用java.util.logging框架是硬编码的。这将确保Tomcat的内部日志记录和任何web应用程序日志记录保持独立,即使web应用程序使用。 要将Tomcat配置为使用替代日志框架来进行内部日志记录,必须用保留完全共用日志发现机制的JULI实现替换硬编码的JULI插入。这种实现是作为附加组件提供的。有关如何将Tomcat配置为使用Log4j框架进行内部日志记录的说明可以在下面找到。
我还从这里找到了这个答案 (另一个问题)和这个问题,后者似乎有一个几乎相同的问题,没有任何解决方案。
我在Tomcat的bin/lib文件夹中搜索了所有JAR,没有找到这样的类(包括各种版本的tomcat-juli.jar和tomcat-juli-adapters.jar)。除了前面链接的Tomcat 8日志指南之外,我几乎没有在互联网上找到任何关于这个类/接口的引用。那么,问题是:为什么Tomcat要找这个类呢?
同样,从链接指南中可以看出:
如果使用实现
org.apache.juli.WebappProperties接口的类加载器(Tomcat的web应用程序类加载器做),则还将对${classloader.webappName}、${classloader.hostName}和${classloader.serviceName}执行属性替换,它们分别被web应用程序名称、主机名和服务名称所替换。
为什么我的Tomcat类加载器没有真正实现它,或者为什么它没有找到它?
发布于 2015-10-19 18:54:19
我们的Ant Tomcat配置过程将Tomcat 7的tomcat-juli.jar复制到Tomcat 8中,从而引发了问题。
从Apache的Tomcat部分获得Tomcat 8的正确tomcat-juli.jar修复了这个问题。
发布于 2014-11-13 21:41:23
该接口位于tomcat-juli.jar中,Tomcat的web应用程序类加载器实现了该接口。
您不需要切换到基于log4j的日志记录来解决此问题。
tomcat-juli.jar (应该在bin目录中)似乎在某个类路径中丢失了。不确定这是否是需要调整Eclipse对Apache集成的部分的配置错误。
我建议您从ASF的一个干净的Tomcat 8.0.15安装开始,确保它在命令行中工作,然后尝试将它与STS/Eclipse集成。
发布于 2017-11-23 06:33:43
检查您正在使用的Tomcat版本。默认情况下,我们预计Tomcat 8.5.4或更高。如果您想使用旧版本,则需要添加tomcat-juli,如发行说明中所述。
https://stackoverflow.com/questions/26898998
复制相似问题