Weblogic 12c部署EAR包时JSP预编译报错求助
解决WebLogic 12c部署EAR时JSTL相关JSP预编译报错的方案
我之前帮团队处理过类似的WebLogic部署JSTL冲突问题,结合你的情况,给你几个针对性的解决建议:
检查JSTL依赖的打包方式
Tomcat本身自带JSTL实现,但WebLogic有自己的内置JSTL库。如果你的WAR包里打包了jstl.jar或standard.jar,很大概率会和WebLogic的内置库产生冲突。建议通过Maven将JSTL依赖设置为<scope>provided</scope>,或者直接从WAR的WEB-INF/lib目录中移除这些JAR包,让WebLogic使用自带的版本。显式配置WebLogic的JSP编译参数
虽然官方说明WebLogic 12c支持JSTL,但有时候需要在weblogic.xml中显式配置JSP相关参数来适配。你可以在WAR的WEB-INF/weblogic.xml中添加以下配置:<jsp-descriptor> <precompile>true</precompile> <keepgenerated>true</keepgenerated> <compileroptions>-target 1.8 -source 1.8</compileroptions> <!-- 请匹配你的项目JDK版本 --> <taglib-uri-mapping> <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri> <taglib-location>/WEB-INF/tld/c.tld</taglib-location> </taglib-uri-mapping> </jsp-descriptor>注意确保
tld文件存在于WAR的WEB-INF/tld目录下,或者直接引用WebLogic内置的TLD路径。校验JSP中JSTL标签的正确性
部分在Tomcat中兼容的写法可能在WebLogic中不生效:- 确认JSTL标签的URI使用标准格式:
http://java.sun.com/jsp/jstl/core(而非旧版的http://java.sun.com/jstl/core) - 避免使用WebLogic 12c不支持的JSTL版本特性(WebLogic 12c通常稳定支持JSTL 1.2,若项目用了JSTL 2.0的特性可能会报错)
- 确认JSTL标签的URI使用标准格式:
定位具体报错信息
不要仅停留在“推测JSTL问题”,WebLogic的预编译日志会给出详细的错误栈(比如类找不到、方法不兼容等)。找到具体的异常信息,能快速锁定是依赖冲突还是标签使用问题——比如如果报错javax.servlet.jsp.jstl.core.Config找不到,基本就是依赖包冲突或未正确设置provided范围导致的。
内容的提问来源于stack exchange,提问作者scatolone
相关产品推荐
相关产品推荐

