OC4J 10.1.3部署时commons-logging-1.1.1.jar未识别问题求助
解决OC4J 10.1.3部署Spring 3.0.1时commons-logging不被识别的问题
我之前也碰到过OC4J和Spring日志依赖的坑,结合你的报错信息(尤其是Loader显示的Spring 3.1.0和你实际用的3.0.1不一致这点),给你几个针对性的排查和解决步骤:
1. 先解决Spring版本冲突的诡异问题
报错里明确写了Loader: org.springframework:3.1.0,但你明明用的是3.0.1.RELEASE,这说明OC4J服务器里肯定混进了Spring 3.1.0的jar包,类加载混乱直接导致了commons-logging的加载异常:
- 先去OC4J安装目录的
lib文件夹翻一遍,看看有没有Spring 3.1.0相关的jar,有的话先移走(如果不影响其他应用的话) - 再检查你自己的应用包,确保所有Spring依赖都是3.0.1.RELEASE版本,别不小心混了其他版本的Spring jar
2. 调整OC4J的类加载优先级
OC4J 10.1.3的类加载机制有点特殊,系统自带的jar优先级可能比你配置的更高,导致你的commons-logging-1.1.1.jar被忽略:
- 给你的应用添加
orion-application.xml配置文件(放在META-INF目录下),设置本地类优先加载:<orion-application> <class-loader search-local-classes-first="true"/> </orion-application> - 这个配置会让应用自己
WEB-INF/lib里的jar优先于服务器系统jar加载,能有效避免依赖冲突
3. 检查commons-logging的配置和放置位置
你说已经把jar加到server.xml里,但可能存在配置问题:
- 先确认
commons-logging-1.1.1.jar的路径是否正确,server.xml里的配置路径要确保服务器能读取到(比如用绝对路径试试):<library path="C:/Users/II/Documents/your-lib-path/commons-logging-1.1.1.jar"/> - 如果server.xml配置不好使,直接把
commons-logging-1.1.1.jar放到你应用的WEB-INF/lib目录下,让应用自己的类加载器直接加载,这是最稳妥的方式,避免服务器级别的配置坑
4. 验证类加载状态
最后可以通过OC4J的管理控制台确认一下:
- 登录控制台找到你的应用,查看类加载器的已加载jar列表,看看
commons-logging-1.1.1.jar是否在列表里 - 如果不在,说明路径或配置有问题;如果在但版本不对,还是得回到冲突排查那一步
按这个顺序一步步来,应该能解决Missing class: org.apache.commons.logging.LogFactory的报错。
内容的提问来源于stack exchange,提问作者user3428736
相关产品推荐
相关产品推荐

