Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Stax提供程序子类型问题-Tomcat_Java_Dependencies_Classloader_Stax - Fatal编程技术网

Java Stax提供程序子类型问题-Tomcat

Java Stax提供程序子类型问题-Tomcat,java,dependencies,classloader,stax,Java,Dependencies,Classloader,Stax,我在Liferay上部署了一个portlet,它具有webservice调用,并在内部使用axis库。当调用Web服务时,我遇到以下错误 原因:java.util.ServiceConfigurationError:javax.xml.stream.XMLInputFactory:Provider com.ctc.wstx.stax.WstxInputFactory不是子类型 我查看了其他各种帖子 列表项 我分析了错误线,把它分成两部分 原因:java.util.ServiceConfig

我在Liferay上部署了一个portlet,它具有webservice调用,并在内部使用axis库。当调用Web服务时,我遇到以下错误

原因:java.util.ServiceConfigurationError:javax.xml.stream.XMLInputFactory:Provider com.ctc.wstx.stax.WstxInputFactory不是子类型

我查看了其他各种帖子

  • 列表项
我分析了错误线,把它分成两部分

  • 原因:java.util.ServiceConfigurationError:javax.xml.stream.XMLInputFactory
  • 提供程序com.ctc.wstx.stax.WstxInputFactory不是子类型
  • 并得出结论,该错误是由于Stax实现不匹配造成的

    所以我检查了lib目录,发现了以下jar

    我看到woodstox-core-asl-4.1.4中存在WstxInputFactory

    为了查看这个jar的添加位置,我检查了build.gradle

    buildscript {
        repositories {
            maven {
                url "https://cdn.lfrs.sl/repository.liferay.com/nexus/content/groups/public"
            }
        }
    
        dependencies {
            classpath group: "com.liferay", name: "com.liferay.gradle.plugins.css.builder", version: "2.0.0"
        }
    }
    
    apply plugin: "com.liferay.css.builder"
    
    dependencies {
    
        def withoutServletAPI = { 
            exclude group: 'javax.servlet', module: 'servlet-api'  
        }
    
        compile group: "org.springframework", name: "spring-webmvc-portlet", version: "4.1.5.RELEASE"
    
        compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.6.0"
        compileOnly group: "javax.portlet", name: "portlet-api", version: "2.0"
        compileOnly group: "javax.servlet", name: "javax.servlet-api", version: "3.0.1"
        compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations", version: "1.3.0"
    
        compile group: "org.apache.axis", name:"axis", version: "1.4"
        compile group: "org.apache.axis2", name:"axis2-adb", version: "1.6.3", withoutServletAPI
        compile group: "org.apache.axis2", name:"axis2-transport-local", version: "1.6.3", withoutServletAPI
        compile group: "org.apache.axis2", name:"axis2-transport-http", version: "1.6.3", withoutServletAPI
        compile group: "com.google.code.gson", name:"gson", version: "2.3.1"    
        compile group: "jstl", name:"jstl", version: "1.2"
        compile group: "taglibs", name:"standard", version: "1.1.2"
    
        //compile group: "memberservice", name:"memberservice", version: "1.0.0"
    
    
        compileOnly group: "com.liferay.portal", name: "com.liferay.util.java", version: "2.4.0"
    
        //compile group: "com.sun.xml.ws", name: "jaxws-rt", version: "2.2.10"
    
        testCompile group: 'junit', name: 'junit', version: '4.8.1'
        testCompile group: 'org.mockito', name: 'mockito-all', version: '1.9.5'
    
        compile files('../../modules/memberservice/build/libs/memberservice-1.0.0.jar')
    
    }
    
    war {
        dependsOn buildCSS
        exclude "**/*.scss"
    
        filesMatching("**/.sass-cache/") {
            it.path = it.path.replace(".sass-cache/", "")
        }
    
        includeEmptyDirs = false
    }
    
    我检查了gradle中的依赖关系树,发现woodstox-core-asl-4.1.4是build.gradle中axis2-adb-1.6.3的可传递依赖关系

    很明显,jar中存在一些冲突,导致了上述错误,但我无法找到是哪个jar导致的。我的怀疑是JDK 8已经有了XMLInputFactory,在我的战争中,我看到了geronimo stax api,它也是一个可传递的依赖项,可能会导致冲突

    我正在寻找问题的真正原因

    注意:此代码不是我创建的。我的客户提供了这段代码,该代码运行在JBoss上较旧版本的Liferay(6.2)上,由不同的供应商创建,我们正在Tomcat上升级到较新版本的Liferay(DXP)


    PS:我还检查了Tomcat的lib目录,那里也没有stax实现

    试着编辑原始问题,但如果你有同样的问题,不要回答。
    I have a similar issue. When upgraded portlet is deployed, spring application boots up successfully. When attempted to view a portlet page, this error occurs. 
    
    2018-08-29 14:31:50.955 ERROR [http-nio-8080-exec-8][render_portlet_jsp:131] null
    java.util.ServiceConfigurationError: javax.xml.parsers.SAXParserFactory: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not a subtype
        at java.util.ServiceLoader.fail(ServiceLoader.java:239)
        at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
        at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
        at javax.xml.parsers.FactoryFinder$1.run(FactoryFinder.java:294)
        at javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:289)
        at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:267)
        at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:127)
        at org.apache.taglibs.standard.tlv.JstlBaseTLV.validate(JstlBaseTLV.java:194)
        at org.apache.taglibs.standard.tlv.JstlCoreTLV.validate(JstlCoreTLV.java:138)
        at org.apache.jasper.compiler.TagLibraryInfoImpl.validate(TagLibraryInfoImpl.java:957)
        at org.apache.jasper.compiler.Validator.validateXmlView(Validator.java:1929)
        at org.apache.jasper.compiler.Validator.validate(Validator.java:1896)
        at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:223)
        at org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
        at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)