最近在做oracle bpm与我们自己公司工作流的一个集成,oracle bpm工程是部署在weblogic 里的oracle soa上的,
 当跑oracle bpm流程的时候,会回调我们的工作流,所以我们需要用到的jar都放在了$ORACLE_HOME$/Middleware/user_projects/domains/soa_domain/lib里
 因为回调我们的工作流的时候会解析一些xml配置文件,我们是用org.apache.commons.digester.Digester.parse(InputStream)(commons-digester-1.7.jar)去解析的,
 其中commons-digester-1.7.jar去解析的时候引用到了org.apache.xerces.parsers.XMLParser类(xercesImpl.jar)
 现在的情况是不管我们的jar包放在哪里(jdk的lib里,或者是oracle_home里的lib里,或者是加入到classpath里)
 在回调的时候是用调用到我们自己这边的代码,但在解析xml时却都调用到了oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:226)(xmlparserv2.jar包)去了
 异常信息:
 1 org.xml.sax.SAXParseException: <Line 19, Column 69>: XML-20190: (Fatal Error) Whitespace required.
 2        at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:422)
 3        at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:287)
 4        at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:376)
 5        at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:226)
 6        at org.apache.commons.digester.Digester.parse(Digester.java:1666)
 7        at com.ai.appframe2.complex.xml.XMLHelper.createServices(XMLHelper.java:355)
 8        at com.ai.appframe2.complex.xml.XMLHelper.getServices(XMLHelper.java:107)
 9        at com.ai.appframe2.complex.service.impl.LocalServiceInvokeImpl.<clinit>(LocalServiceInvokeImpl.java:51)
 其中7、8、9行是我们自己的代码,6行是commons-digester-1.7.jar里的代码,2-5行却用到oracle的xmlparserv2.jar包里去了
 这个问题已经困扰我一周了,不知道哪位好心人有没有遇到这样的情况或者知道怎么去解决的,麻烦分享一下,非常感谢

解决方案 »

  1.   

    现在的情况是不管我们的jar包放在哪里(jdk的lib里,或者是oracle_home里的lib里,或者是加入到classpath里)
      在回调的时候是用调用到我们自己这边的代码,但在解析xml时却都调用到了oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:226)(xmlparserv2.jar包)去了
    正常的情况下应该是调org.apache.xerces.parsers.XMLParser类(xercesImpl.jar)去解析的呀
      

  2.   

    和代码没关系,也和配置没关系,就是jar冲突了,解析我自己的配置文件时,要怎么样才能使用到我自己需要的jar包,不要用oracle容器里的xmlparserv2.jar
    就是要怎么样他们使用他们的jar,我们使用我们的jar,不要冲突
      

  3.   

    你没看清我的问题吧,这个不需要看代码的,就是jar冲突了,在解析我的xml时,我自己有引用xercesImpl.jar包的,但却用到oracle容器里xmlparserv2.jar包去了,我现在把xmlparserv2.jar删除也不行,删除了那启动weblogic就启动不起来了
    现在的情况就是我能正常用我的jar,他们能正常用他们的jar,不要冲突
      

  4.   

    这个和jar包没关系吧,调用哪个包里的类,取决于被调用类的全名。
    这个由调用者决定的。
      

  5.   

    这问题折腾我了两周了,终于找到原因了,是我自己的xml少了一个空格,就是异常信息误导我以为是jar冲突,不容易啊