maven 实施后 Webapp 部署失败

Webapp deployment fails after maven implemtation

在实施 Maven 进行依赖项管理后,我在 tomcat 上部署网络应用程序时遇到问题。在实施 Maven 之前,它是一个普通的 Web 应用程序,其中的所有内容都用于手动管理。我开始使用学习框架升级应用程序,并决定首先实施 Maven 进行依赖管理。 虽然我实施了 Maven 并且在 eclipse 中一切正常,但当我在独立 tomcat.

上部署 war 文件时它不起作用

我在 Catalina 属性中针对 shared.loader 属性 和 tomcat conf 目录中的 Catalina 文件夹下的上下文 xml 定义我的应用程序的路径(参见目录结构下)

directoryStructure

C:/Application/SNSS/SNSS_PROD/
                    |
                    |-->OpsMan
                    |   |
                    |   |-->WebApp
                    |   |   |->css
                    |   |   |->images
                    |   |   |->log (log4j2.xml)
                    |   |   |->jsp
                    |   |   |->resources
                    |   |   |->WEB-INF
                    |   |   |->
                    |   |
                    |   |-->WebApp_20220102
                    |   |   |->css
                    |   |   |->images
                    |   |   |->log (log4j2.xml)
                    |   |   |->jsp
                    |   |   |->resources
                    |   |   |->WEB-INF
                    |
                    |-->Tomcat9
                    |   |->conf
                    |   |   |->Catalina
                    |   |   |   |->localhost (blank folder)
                    |   |   |   |->www.snss.com
                    |   |   |   |   |
                    |   |   |   |   |->OpsMan.xml
                    |   |   |   |
                    |   |   |->catalina.properties
                    |   |   |->server.xml
                    |   |   |
                    |   |   |->Other conf files
                    |   |   |->resources
                    |   |   |->WEB-INF
                    |   |
                    |   |->(other folder like bin, lib etc)

以下是来自 Tomcat 配置的相关条目

catalina.properties

shared.loader="C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp"

server.xml(除了默认主机标签,我还为我的应用添加了一个)

      <Host name="www.snss.com"  appBase="C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp"
        unpackWARs="true" autoDeploy="true">
        
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
           
    <alias>snss.com</alias>
  </Host>

OpsMan.xml

<Context displayName="www.snss.com" docBase="C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp" />

在“C:\Windows\system32\drivers\etc\hosts”中创建了以下条目的文件,并将端口代理设置为将端口 80 上的 HTTP 请求重定向到 8080。

127.0.0.1   www.snss.com

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" strict="false" name="ROM" packages="">
  <Properties>
    <Property name="root.dir">C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp</Property>
    <Property name="log.dir">${root.dir}/log</Property>
  </Properties>
  <Appenders>
    <RollingFile name="RollingFile" fileName="${log.dir}/rom.log"
                 filePattern="${log.dir}/$${date:yyyy-MM}/rom-%d{yyyy-MM-dd-HH}-%i.log">
      <PatternLayout>
        <Pattern>[%t] - %d{yyyy-MMM-dd - HH:mm:ss,SSS} %-5p %C{1} %L - %m%n</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
        <SizeBasedTriggeringPolicy size="10 MB"/>
      </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="trace">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>in.co.snss</groupId>
  <artifactId>OpsMan</artifactId>
  <version>22.01.1</version>
  <packaging>war</packaging>
  <dependencies>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>9.0.27</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
        <version>2.17.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-configuration2</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20200518</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.15.0</version>
    </dependency>
    <dependency>  
        <groupId>javax</groupId>    
        <artifactId>javaee-web-api</artifactId>    
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
          <release>12</release>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.1</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

“WebApp\WEB-INF\lib”文件夹中的罐子

lib folder with Maven

“WebApp_20220102\WEB-INF\lib”文件夹中的罐子

lib folder without Maven

web.xml 在“WebApp\WEB-INF”文件夹中

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>OpsMan</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>HomeServlet</servlet-name>
    <servlet-class>in.co.snss.opsman.web.servlet.HomeServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>in.co.snss.user.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HomeServlet</servlet-name>
    <url-pattern>/Orders/*</url-pattern>
    <url-pattern>/Notes/*</url-pattern>
    <url-pattern>/Accounts/*</url-pattern>
    <url-pattern>/Party/*</url-pattern>
    <url-pattern>/Products/*</url-pattern>
    <url-pattern>/Reports/*</url-pattern>
    <url-pattern>/Users/*</url-pattern>
    <url-pattern>/Inventory/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/index/*</url-pattern>
    <url-pattern>/OpsMan/*</url-pattern>
    <url-pattern>/login</url-pattern>
    <url-pattern>/logout</url-pattern>
    <url-pattern>/RegisterLicense</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>/log/log4j2.xml</param-value>
  </context-param>
</web-app>

现在,当我开始 tomcat 时,我在部署 OpsMan 时遇到错误。以下是控制台输出

03-Jan-2022 16:19:03.299 WARNING [main] org.apache.tomcat.util.digester.Digester.endElement No rules found matching [Server/Service/Engine/Host/alias]
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.27
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Oct 7 2019 09:57:22 UTC
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.27.0
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 10
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.0
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             C:\Program Files\Java\jre1.8.0_311
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_311-b11
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\Applications\SNSS\SNSS_PROD\Tomcat9
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\Applications\SNSS\SNSS_PROD\Tomcat9
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=.\Tomcat9\conf\logging.properties
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=.\Tomcat9
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=.\Tomcat9
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=.\Tomcat9\temp
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.23] using APR version [1.7.0].
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
03-Jan-2022 16:19:03.299 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
03-Jan-2022 16:19:03.315 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1c  28 May 2019]
03-Jan-2022 16:19:03.549 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
03-Jan-2022 16:19:03.643 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
03-Jan-2022 16:19:03.643 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [520] milliseconds
03-Jan-2022 16:19:03.674 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
03-Jan-2022 16:19:03.674 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.27]
03-Jan-2022 16:19:03.690 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\docs]
03-Jan-2022 16:19:03.986 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\docs] has finished in [296] ms
03-Jan-2022 16:19:03.986 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\examples]
03-Jan-2022 16:19:04.377 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\examples] has finished in [391] ms
03-Jan-2022 16:19:04.377 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\host-manager]
03-Jan-2022 16:19:04.408 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\host-manager] has finished in [31] ms
03-Jan-2022 16:19:04.408 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\manager]
03-Jan-2022 16:19:04.439 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\manager] has finished in [31] ms
03-Jan-2022 16:19:04.439 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\ROOT]
03-Jan-2022 16:19:04.549 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\Tomcat9\webapps\ROOT] has finished in [110] ms
03-Jan-2022 16:19:04.564 INFO [main] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment descriptor [C:\Applications\SNSS\SNSS_PROD\Tomcat9\conf\Catalina\www.snss.com\OpsMan.xml]
03-Jan-2022 16:19:07.222 SEVERE [main] org.apache.catalina.startup.HostConfig.deployDescriptor Error deploying deployment descriptor [C:\Applications\SNSS\SNSS_PROD\Tomcat9\conf\Catalina\www.snss.com\OpsMan.xml]
        java.lang.IllegalStateException: Error starting child
                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:720)
                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
                at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
                at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:631)
                at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1831)
                at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
                at java.util.concurrent.FutureTask.run(Unknown Source)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
                at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:526)
                at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:425)
                at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1576)
                at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
                at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
                at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
                at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936)
                at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
                at java.util.concurrent.FutureTask.run(Unknown Source)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
                at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                at java.lang.reflect.Method.invoke(Unknown Source)
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:344)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)
        Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[www.snss.com].StandardContext[/OpsMan]]
                at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
                ... 37 more
        Caused by: java.lang.NoClassDefFoundError: LLogger;
                at java.lang.Class.getDeclaredFields0(Native Method)
                at java.lang.Class.privateGetDeclaredFields(Unknown Source)
                at java.lang.Class.getDeclaredFields(Unknown Source)
                at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:110)
                at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:269)
                at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:137)
                at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:69)
                at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:330)
                at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:777)
                at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
                at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5051)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                ... 38 more
        Caused by: java.lang.ClassNotFoundException: Logger
                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
                at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
                ... 51 more
03-Jan-2022 16:19:07.238 INFO [main] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of deployment descriptor [C:\Applications\SNSS\SNSS_PROD\Tomcat9\conf\Catalina\www.snss.com\OpsMan.xml] has finished in [2,689] ms
03-Jan-2022 16:19:07.238 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\css]
03-Jan-2022 16:19:07.378 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\css] has finished in [140] ms
03-Jan-2022 16:19:07.378 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\images]
03-Jan-2022 16:19:07.503 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\images] has finished in [125] ms
03-Jan-2022 16:19:07.503 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\js]
03-Jan-2022 16:19:07.628 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\js] has finished in [125] ms
03-Jan-2022 16:19:07.628 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\jsp]
03-Jan-2022 16:19:07.738 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\jsp] has finished in [110] ms
03-Jan-2022 16:19:07.738 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\log]
03-Jan-2022 16:19:07.863 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\log] has finished in [125] ms
03-Jan-2022 16:19:07.863 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\Output]
03-Jan-2022 16:19:08.034 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\Output] has finished in [171] ms
03-Jan-2022 16:19:08.050 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\resources]
03-Jan-2022 16:19:08.159 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\resources] has finished in [109] ms
03-Jan-2022 16:19:08.159 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\script]
03-Jan-2022 16:19:08.284 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\SNSS\SNSS_PROD\OpsMan\WebApp\script] has finished in [125] ms
03-Jan-2022 16:19:08.284 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
03-Jan-2022 16:19:08.284 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
03-Jan-2022 16:19:08.284 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [4,642] milliseconds

使用相同的设置,如果我将“WebApp”重命名为“WebApp_New”,将“WebApp_20220102”重命名为“WebApp”(基本上是旧应用程序),那么一切正常,没有任何问题。

我已经比较了“WebApp”文件夹中的所有配置文件,例如log4j2.xml、web.xml 等,但无法找出有问题的条目。我也尝试过将旧应用程序 (WebApp_20220102\WEB-INF\lib) 中的 jars 替换为新应用程序的 lib 文件夹,但没有任何改变。我在部署新应用程序时仍然遇到问题,但如果我重命名 WebApp 文件夹并启动旧应用程序,它就可以正常工作。

您缺少 log4j 实现 JAR。 “带有 Maven 的 lib 文件夹”列出了 log4j-api JAR,但没有列出 log4j-core 实现。添加

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.17.1</version>
</dependency>

到pom.xml

由于我能够 运行 在 Eclipse 中 tomcat 上部署该应用程序,因此我开始研究独立 tomcat 和 eclipse 中配置的差异。我没有发现任何差异,或者我匹配了两个服务器的配置。

在此之后,我决定查看 Web App 文件夹中的每个文件,我发现 .class 文件的大小不同。我意识到当 Eclipse 将它部署到内部 tomcat 时,它正在将输出编译到目标文件夹,但是当使用 Maven 完成此操作时,class 文件会在 /target/classes 文件夹中生成。此文件夹在打包时复制到/WEB-INF/classes文件夹。

就我而言,我不知道如何在项目的 WebContent/WEB-INF/classes 目录中找到 classes 文件夹。这个目录有非常旧的 classes 版本,而且大小非常小(3KB 对 10KB)。我从 WebContent/WEB-INF 文件夹中删除了 classes 目录,然后 Maven 开始将 target/classes 文件夹复制到 WEB-INF/classes。这解决了问题。