【问题标题】:Webapp deployment fails after maven implemtationmaven实施后Webapp部署失败
【发布时间】:2022-01-04 06:19:13
【问题描述】:

在实施 Maven 进行依赖管理后,我在 tomcat 上部署 Web 应用程序时遇到问题。在 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”文件夹中的 jars

lib folder with Maven

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

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) 中的 jar 替换到新应用程序的 lib 文件夹中,但没有任何改变。我在部署新应用程序时仍然遇到问题,但如果我重命名 WebApp 文件夹并启动旧应用程序,它就可以正常工作。

【问题讨论】:

    标签: java maven tomcat


    【解决方案1】:

    您缺少 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

    【讨论】:

    • 嗨西蒙,我之前有这个依赖关系,我用 org.apache.logging.log4jlog4j-1.2-api2.17.1 但我遇到了这个问题。我已经添加了 log4j-core 依赖项,但问题仍然存在。事实上,我也有 log4j-web 依赖。
    • 错误告诉你缺少一个类。由于 Maven 将处理 lib 文件夹,因此您需要查找的是:在 pom.xml 中声明的 JAR 是否由服务器实际提供?是否存在 API 实现 JAR(您的代码将只使用 API,但最终您也需要一个实现)。 NoClassDefFoundError: LLogger 很清楚缺少一些日志记录 JAR(或版本不匹配)。
    • 是的,西蒙,没错。日志记录 jar 存在问题,但我无法确定 log4j-1.2-api-2.17.1.jar 中存在哪个 Logger 类。所以 Logger 类的 ClassNotFound 不应该有错误。但我仍然收到此错误。我怀疑,lib 文件夹本身没有被访问。看起来更像是一个类路径问题而不是 jar 的存在。
    • 只是为了仔细检查:你没有像stackoverflow.com/questions/6345793/… 中描述的那样奇怪的 context.xml 配置,是吗?
    【解决方案2】:

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

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

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

    【讨论】:

    • 我仍然不确定为什么从 Eclipse 和 Maven 的 Clean build 没有覆盖 /WebContent/WEB-INF/classes 文件夹中的文件...
    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多