我正在使用tomcat 9,并尝试从PreResources标记下面加载所有与项目相关的jar。
<Resources className="org.apache.catalina.webresources.StandardRoot" cachingAllowed="true" cacheMaxSize="100000" allowLinking="true"> <PreResources className="org.apache.catalina.webresources.DirResourceSet" base="D:\SomePath\apache-tomcat-9.0.0.M17-windows-x64-2\apache-tomcat-9.0.0.M17" internalPath="/External-lib" webAppMount="/WEB-INF/classes" />
根据“基本”中提到的路径,External-lib文件夹位于tomcat目录中。但是部署应用程序时,出现以下错误。
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
这是从web.xml调用的,
org.springframework.web.context.ContextLoaderListener
在tomcat lib中,我们只有tomcat库,其余所有jar都位于External- lib文件夹中。由于我们有相似的webApp,而jar的jar太多,因此我们试图将它们外部化,而不是加载到webapp / web-inf / lib文件夹中。
请建议,使用PreResources元素从meta-inf / context.xml加载jar时是否丢失任何内容?
此PreResources元素的示例和文档很少。任何方向或帮助将不胜感激。
这应该是context.xml的内容。它可以解决我的问题。
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resources> <PreResources className="org.apache.catalina.webresources.DirResourceSet" base="SomePath\External-lib\" webAppMount="/WEB-INF/lib" /> </Resources> </Context>
“基础”是外部资源的路径,“ webAppMount”是您要挂载这些资源的位置。