weblogic部署项目:Cannot set web app root system property when WAR file is not expanded

本文介绍了解决在WebLogic服务器上部署WAR包时出现的“Cannot set web app root system property when WAR file is not expanded”错误的方法。通过在WEB-INF目录下添加weblogic.xml并设置show-archived-real-path-enabled为true来修复servletContext.getRealPath函数返回空的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天项目 以2种方式进行跑,一种是 war包,一种是 文件夹的形式!

tomcat 下面2种方式都没问题。

weblogic下面 war包的形式进行部署的话 报如下错误:

[java]  view plain copy
  1. Caused By: java.lang.IllegalStateException: Cannot set web app root system property when WAR file is not expanded  
  2. at org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:139)  
  3. at org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:118)  
  4. at org.springframework.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:47)  
  5. at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:481)  
  6. at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)  
  7. Truncated. see log file for complete stacktrace  

网上很多解决办法,说是 log4j 的配置问题,但是怎么搞都不行!


最后查看源码,发现其实主要问题是 : servletContext.getRealPath函数为空

然后就根据这个去查 ,发现果然是weblogic的问题;


解决办法:

在web-inf 下面 加  weblogic.xml 

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">  
  3.    
  4. <weblogic-web-app>  
  5.   <container-descriptor>  
  6.     <show-archived-real-path-enabled>true</show-archived-real-path-enabled>  
  7.   </container-descriptor>  
  8. </weblogic-web-app>  

然后问题就解决了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值