Tomcat:PreResources标记没有加载jar

时间:2017-06-02 15:34:22

标签: java spring tomcat jar resources

我正在使用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目录中,符合&#39; base&#39;中提到的路径。但是当部署应用程序时,我会遇到错误。

 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

这是从web.xml调用的,

    org.springframework.web.context.ContextLoaderListener

在tomcat lib中,我们只有tomcat库,其余所有jar都在External-lib文件夹中。由于我们有类似的webApp和jar太多,我们试图将它们外化,而不是加载到webapp / web-inf / lib文件夹中。

请注意,使用PreResources元素从meta-inf / context.xml加载jar时,我遗漏了任何内容。

此PreResources元素的示例和文档非常少。 任何方向或帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

这应该是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>

“Base”是外部资源的路径,“webAppMount”是您要安装这些资源的地方。