You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java1.8+JSF+Spring MVC+Weblogic项目遇StackOverflowError且图片加载失败

解决Weblogic 12.2.1.4中JSF图片加载引发的StackOverflowError问题

问题描述

基于Java 1.8、JSF、Spring MVC和Weblogic 12.2.1.4的Web项目,编译发布均正常,但页面导航时抛出java.lang.StackOverflowError。错误日志指向类加载器getResources方法递归调用导致栈溢出,最终定位问题为Weblogic无法正确加载页面中的图片,图片引用代码如下:

<img style="width:80px;" src="#{facesContext.externalContext.requestContextPath}/resources/images/project/project.gif" />

解决方案

  • 使用JSF原生资源标签加载图片
    放弃手动拼接路径的方式,改用JSF的<h:graphicImage>标签,利用其自带的资源加载机制规避类加载器冲突:

    <h:graphicImage style="width:80px;" name="images/project/project.gif" library="project" />
    

    需确保资源目录结构为WebContent/resources/project/images/project/project.gif,符合JSF资源库的规范要求。

  • 调整Weblogic资源加载配置
    在项目的weblogic.xml中添加如下配置,明确静态资源处理规则,避免类加载器递归调用:

    <container-descriptor>
      <prefer-web-inf-classes>false</prefer-web-inf-classes>
      <resource-reload-check-secs>0</resource-reload-check-secs>
    </container-descriptor>
    <context-root>/你的项目根路径</context-root>
    
  • 校验资源路径与文件存在性
    确认图片文件确实存在于WEB-INF/resources/images/project/目录下,文件名及路径大小写需与代码完全匹配(Weblogic对路径大小写敏感)。

  • 放行Spring MVC静态资源拦截
    若Spring MVC配置了全局请求拦截,需在spring-servlet.xml中添加静态资源放行规则:

    <mvc:resources mapping="/resources/**" location="/resources/" />
    

内容的提问来源于stack exchange,提问作者Homselan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 19:06:28