问题描述
新建了一个web工程,windows下mvn打成war包.ftp上传到服务器tomcat软件下,重启tomcat后不自动解压,并报错.
catalina.out
05-Apr-2020 14:30:20.276 严重 [main] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file
05-Apr-2020 14:30:20.278 严重 [main] org.apache.catalina.core.StandardContext.startInternal Context [/ss] startup failed due to previous errors
05-Apr-2020 14:30:20.285 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ss] appears to have started a thread named [Log4j2-AsyncLoggerConfig-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
localhost.2020-04-05.log
05-Apr-2020 14:30:20.237 严重 [main] org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常
javax.servlet.ServletException: ServletConext.getRealPath()获取不到webcontext路径,如果使用的是weblogic,请在weblogic.xml中增加<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
at cn.sunline.ia8.core.filter.SetCharacterEncodingFilter.init(SetCharacterEncodingFilter.java:109)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:270)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:251)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4530)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5169)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
解决过程
- 将war包放在window下的tomcat,重启正常,解压正常,访问正常
- 尝试各种方案无法解决,最终解决方案:
-
先在webapps下建立一个和项目名相同的文件夹,把war包移动到该文件夹
-
自行手动解压war包
jar -xvf 项目名.war
-
然后停止tomcat
-
删除war包,保留解压后的文件夹
-
重启tomcat后正常
回顾
由于报错代码是mvn引入的jar包所以用此方案解决.