(本文档仅供参考)
问题
正常情况下weblogic部署启动后会进行读取XML文件,这时候就会因为jar包冲突提示:javax.xml.stream.XMLInputFactory: Provider com.ctc.wstx.stax.WstxInputFactory not a subtype 这类提示如下图:
依据产品的weblogic部署smartbi的文档,Smartbi 在部署到Weblogic应用服务器上时,如果出现部署不上,或者部署之后启动应用时出现WstxIOException或 XMLInputFactory之类的错误提示,请删除smartbi.war/ WEB-INF/lib目录中的geronimo-stax-api_1.0_spec-1.0.1.jar和wstx-asl-3.2.4.jar两个 jar包,然后再重新部署。:部署Smartbi到WebLogic 10
存在特殊情况,在部署的时候没有报这类错误,那正常情况下也不会删除这两个jar包,但在进行系统某些操作,比如说上传扩展包、恢复知识库等操作就报错了,比如说恢复知识库提示:导入失败:com.ctc.wstx.stax.WstxEventFactory cannot be cast to javax.xml.stream.XMLEventFactory ,错误如下图,这时候要如何解决?
解决方案
当遇到这类错误,特别是weblogic环境,我们首先要考虑是否是因为jar包冲突了,如何确认是否是jar包冲突,可以这样操作:
1、将报错提示的类名通过【系统监控】--》【类查找】--》输入类名后找到war包的加载路径,如下图。我们可以看到war包是存在这个类文件了,但是为什么调用的时候还是无法正常调用到,这时候基本可以确定是因为war包和中间件(weblogic、Tomcat、WebSphere等)下的jar包冲突了,我们可以考虑将war包的jar包删除,然后再重新部署,注意weblogic不能直接采用更新应用,需要先卸载然后再重新部署smartbi.war包。
2、如果无法从类冲突确定,也可以从产品的部署文档查找,通常情况下weblogic部署smartbi容易出现类冲突,所以我们可以在官方的wiki文档上找到如何weblogic部署smartbi的文档,然后依据文档说明进行删除jar,如部署Smartbi到WebLogic 10